WebUI自动化 selenium+testng+java环境搭建及问题汇总(一)

来源:互联网 发布:淘宝卖家不可以更新 编辑:程序博客网 时间:2024/05/16 14:03

搭建WebUI自动化环境

1.    安装Java环境:eclipse

官网下载eclipse.org,用IBM的镜像下载。

安装的时候可能会存在jdk版本不够等问题,下载、补安装就好。

2.    安装testng

eclipse-帮助-install new software,在弹出窗口中的“Work with”中输入地址:http://beust.com/eclipse

windows的还可以离线安装,下载离线安装包http://pan.baidu.com/s/1i3y1QtR,放在eclipse下的feature和plugins下面,重启eclipse就行了。

3.    创建Java Project

4.    浏览器driver

工程中创建WebDriver的时候需要引用浏览器driver文件,例如chrome的,windows下的为chromedriver.exe,mac下为chromedriver,代码中通过相对地址引用。

注意:mac的路径是”//”不是“\\”。下载地址:http://chromedriver.storage.googleapis.com/index.html?path=2.7/

mac的:

5.    引入lib库

创建project之后就可以设置并引入了。也可以在project创建完成后在build path中重新设置。

6.    selenium IDE 安装

http://release.seleniumhq.org/selenium-ide/

filefox附件组件里安装,网上找教程

7.    testsuit的配置

testsuit文件夹下是一个个的xml文件,其中一个xml是一个用例集合,里边一个test是一个case,并指定case所在的类文件。

属性详解如下:

http://www.cnblogs.com/tobecrazy/p/4582173.html

suite属性说明:

@name: suite的名称,必须参数    

@junit:是否以Junit模式运行,可选值(true | false),默认"false"

@verbose:命令行信息打印等级,不会影响测试报告输出内容;可选值(1|2|3|4|5) 

@parallel:是否多线程并发运行测试;可选值(false |methods | tests | classes | instances),默认"false"

@thread-count:当为并发执行时的线程池数量,默认为"5"

@configfailurepolicy:一旦Before/AfterClass/Methods这些方法失败后,是继续执行测试还是跳过测试;可选值 (skip |continue),默认"skip"

@annotations:获取注解的位置,如果为"javadoc",则使用javadoc注解,否则使用jdk注解

@time-out:为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒

@skipfailedinvocationcounts:是否跳过失败的调用,可选值(true | false),默认"false"

@data-provider-thread-count:并发执行时data-provider的线程池数量,默认为"10"

@object-factory:一个实现IObjectFactory接口的类,用来实例测试对象

@allow-return-values:是否允许返回函数值,可选值(true| false),默认"false"

@preserve-order:顺序执行开关,可选值(true |false) "true"

@group-by-instances:是否按实例分组,可选值(true| false) "false"

test属性说明:

@name:test的名字,必选参数;测试报告中会有体现

@junit:是否以Junit模式运行,可选值(true | false),默认"false"

@verbose:命令行信息打印等级,不会影响测试报告输出内容;可选值(1|2|3|4|5) 

@parallel:是否多线程并发运行测试;可选值(false |methods | tests | classes | instances),默认"false"

@thread-count:当为并发执行时的线程池数量,默认为"5"

@annotations:获取注解的位置,如果为"javadoc",则使用javadoc注解,否则使用jdk5注解

@time-out:为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒

@enabled:设置当前test是否生效,可选值(true | false),默认"true" 

@skipfailedinvocationcounts:是否跳过失败的调用,可选值(true | false),默认"false"

@preserve-order:顺序执行开关,可选值(true |false) "true"

@group-by-instances:是否按实例分组,可选值(true| false) "false"

@allow-return-values:是否允许返回函数值,可选值(true| false),默认"false"

parallel="methods":TestNG will run all your test methods in separate threads. Dependent methodswill also run in separate threads but they will respect the order that youspecified.

 

parallel="tests":TestNG will run all the methods in the same <test> tag in the samethread, but each <test> tag will be in a separate thread. This allows youto group all your classes that are not thread safe in the same <test> andguarantee they will all run in the same thread while taking advantage of TestNGusing as many threads as possible to run your tests.

 

parallel="classes":TestNG will run all the methods in the same class in the same thread, but eachclass will be run in a separate thread.

 

parallel="instances":TestNG will run all the methods in the same instance in the same thread, buttwo methods on two different instances will be running in different threads.

8.    ant的配置

build.xml文件分为属性赋值、初始化、编译、执行、报告五部分。

主要修改之行中的testsuit中的xml的部分,依次把要执行的xml include进来。

要在transform_xsl_dir文件夹中存放一个testng_results.xsl的文件,里面是report结果文件的样式。

同时要定义结果文件的存放地址:

是被运行的工程文件的绝对路径下的report_dir文件夹的地址

9.    Jenkins的安装及配置

安装:

下载jenkins.war的文件 http://mirrors.jenkins-ci.org/war/latest/

例如window将war文件放在C盘,例如目录c:\Jenkins下

命令行中cd 到c:\Jenkins下

执行java –jar Jenkins.war

配置:

访问jenkins页面:

配置自动化代码路径,跟jenkins在同一台机器上


配置执行周期:

或由另外一个项目构建结束后触发:

init项目通过执行windows的batch command,完成的是关闭windows的无效浏览器driver进程,把hosts指到线上。

taskkill /t /f /im chromedriver.exe

taskkill /t /f /im chrome.exe

taskkill /t /f /im firefox.exe

taskkill /t /f /im plugin-container.exe

copy C:\WINDOWS\system32\drivers\etc\hosts.bakC:\WINDOWS\system32\drivers\etc\hosts /y

 

 

配置构建方法:

邮件发件人在jenkins的系统设置里边


HTML_REPORT的构建后事件配置:

错误现象:

工程目录的report_dir下,每次的html结果报告都更新了,但是jenkins页面中的不更新,每次都是一样的。

重要:

HTML directory to archive的配置要根据源码管理的不同,区分两种情况,

一种是固定在一个目录下,手动更新,此时工作空间的目录是:path/项目名

一种是jenkins通过svn自动部署的,此时工作空间的目录是:path

所以,第一种配置地址的时候直接写report_dir就好,第二种就需要在前面加上项目名。


10.  Svn配置

当 visual svn服务器换ip之后,需要修改svn配置。步骤如下:

然后再启动就好了

重新在jenkins中设置用户名密码.


svn 地址变更:       

当因为ip变化,svn地址需要更新的时候,不需要删了重部,可以relocate。命令如下:

svnswitch --relocate svn://10..../mycode/pagesandbox svn://10.../mycode/pagesandbox

原地址,目标地址


问题汇总:

1.    log无法输出报错

log4j:WARN No appenderscould be found

解决办法:

在使用Log4j时若提示如下信息:
log4j:WARN No appenders could be found for logger


解决办法为:在项目的src下面新建file名为log4j.properties文件,内容如下: 

# Configure loggingfor testing: optionally with log file
#可以设置级别:debug>info>error
#debug:可以显式debug,info,error
#info:可以显式info,error
#error:可以显式error

log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1
#log4j.rootLogger=error,appender1

 

#输出到控制台

log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#样式为TTCCLayout
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

然后,存盘退出。再次运行程序就会显示Log信息了。


通过配置文件可知,我们需要配置3个方面的内容:
1、根目录(级别和目的地);
2、目的地(控制台、文件等等);
3、输出样式。

2.    WebDriver的统一

整个工程框架的设计中,所有操作使用的webdriver必须是一个,否则就找不到元素。

例如在drvier1(一个chrome窗口)中打开了测试网页;查找元素的时候却换成driver2中查找,而这个窗口中并没有打开weibo.com,也就没有相关元素。

解决办法:

所以调用创建webdriver的方法的类只能有一个,其它的类有两种办法使用这个webdriver:

一是继承那个类;

二是定义自己的webdriver,初始化为null,然后在类的构造函数中通过传参为这个webdriver赋值。

3.    实例化new时,如果想在function里边调用,一定要带参数的构造函数,默认的不行。

4.    自定义了带参数的构造函数broweroperation,java和xml文件执行都没问题,build文件就构建失败,报错如下:

原因是在定义了含参的构造函数,java就不会自动生成无参的构造函数,在编译的时候就找不到。

解决办法:手动加了一个无参数的构造函数。


5.    删除jenkins的构建历史

进入Jenkins根目录,Windows下默认位于当前用户目录中的.jenkins文件夹。

手工删除构建记录,构建记录位于.jenkins\jobs\XXX\builds中(其中XXX为具体项目名称),以时间戳方式进行组织。根据需要直接删除对应的构建历史即可。 


阅读全文
0 0
原创粉丝点击