我的自动化测试历程(Selenium+TestNG+Java+ReportNG+Jenkins)

原地址:http://blog.csdn.net/shilinjie_8952/article/details/53380373?locationNum=11&fps=1

测试环境:Java+Selenium+TestNG,Jenkins持续集成。

测试代码

代码结构

采用页面对象模型(Page Object),减少UI修改后,对代码的影响。


Java编写,采用TestNG测试框架。

先说点概念的:

  • Selenium 
    Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制(Selenium
    IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium
    Grid)。Selenium的核心Selenium
    Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。 
    Selenium
    Core:Selenium的核心部分,它由一些纯js代码组成,
    可以运行在windows/linux的不同browser上,而IDE是在core的基础上的一种应用,
    通过UI实现类似QTP/Winner的脚本录制回放功能,它是Selenium IDE 和 Selenium RC 的引擎。 
    Selenium IDE: FireFox 的一个插件,支持脚本录制。 
    Selenium
    RC: Selenium Remote Control,是客户端利用各种编程语言,通过网络向Selenium
    Server发送指令,Selenium
    Server接收到测试指令后,启动浏览器并向其发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给调用者。 
    Selenium WD: Selenium WebDriver。Web驱动。 
    Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,极大地加快 Web 应用的功能测试。 (没有用过,不太了解)
  • TestNG 
    TestNG是一个测试框架,使用@Test控制测试的执行,执行后,自动输出测试报告。

环境搭建

Java运行环境

根据个人电脑系统类型选择对应的jdk安装包下载(jdk-8u5-windows-x64.exe或jdk-7u45-windows-i586.exe)下载完成之后,打开软件进行安装。

  • 配置环境变量

    系统环境变量JAVA_HOME:d:\Java\jdk1.8.0_05(写 自己安装的jdk地址)

    系统环境变量Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

    系统变量CLASSPATH:;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

配置完成之后,在doc下输入javac,如果出现用法:javac。。,证明配置好了

JDBC配置

Jdbc用于java读取sql server数据库。 
数据库安装就不多说了,我本地64位计算机,jdk1.8,Sql Server 2008R2。

  1. 下载Microsoft JDBC Driver 6.0 (sqljdbc_6.0.7728.100_chs.tar.gz) 
    官网地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774 
    我只留下了sqljdbc4.jar
  2. 配置环境变量CLASSPATH 
    新增:C:\sqljdbc4;( 我放在了C盘根目录下)
  3. 复制包到相关目录下 
    sqljdbc4.jar文件拷到 
    E:\Program Files\Java\jdk1.8.0_05\jre\lib\ext 
    E:\Program Files\Java\jre8\lib\ext 
    目录下,分别拷贝一份(看你的安装目录了)

Java开发工具

eclipse-standard-kepler-SR1-win32-x86_64

相关包导入

  • TestNG 
    TestNG框架相关: 
    bsh-2.0b4.jar,jcommander.jar,snakeyaml.jar这三个包。 
    在org.testng.eclipse_6.9.9.201510270734中lib中,我把整个文件夹(rg.testng.eclipse_6.9.9.20151027073)放在了eclipse所在的目录:\eclipse\features\org.testng.eclipse_6.9.9.201510270734\lib
    ,之后在引入这三个包。
  • Selenium 
    selenium-server-standalone-2.48.2.jar
  • Jxl.jar 
    用于读取excel表格

浏览器

浏览器使用火狐浏览器39.0.3,虽然版本比较低,但是与selenium版本兼容,需要安装组件:firepath

页面元素

定位

通过页面元素的固定属性,来确定元素。可以通过id,name,className,tagName,cssSelector,linkText,partialLinkText等属性来定位,不太好定位的元素,可以使用xpath方式。

    1. 通过id定位

driver.findElement( By.id("Text1"))

    1. 通过name定位

driver.findElement( By.name("输入"))

    1. 通过xpath定位

driver.findElement( By.xpath("html/body/div[1]/p[1]/label/input"))

    1. 通过linkText定位链接

driver.findElement( By.linkText ("这是一个链接")),需要完整匹配文字

    1. 通过partialLinkText定位链接

driver.findElement( By. partialLinkText ("链接")),不需要完整匹配文字

    1. findElements()

定位多个元素,返回一个list,List elements,通过elements.get(index).click();进行遍历操作,index从0开始。 
注意:如果属性中有空格,就只能使用xpath方法确定元素。

元素操作

1.文本框赋值

sendKeys("你好!")

2.清空文本框

clear()

3.获取文本框中内容

getAttribute("value")

4.点击

.click()

5.下拉框

  • 选择 
    首先定义一个下拉框对象: 
    Select select = new Select(driver.findElement(By.xpath("//*[@id=‘select_k1‘]"))); 
    第二步,通过对象定位所选的下拉框内容,三种方法:
    //通过可见文本去选择
       select.selectByVisibleText("哈尔滨");
       //通过html中的value值去选择
       select.selectByValue("heb");
       //通过index(索引从 0 开始) 选择
        select.selectByIndex(2);  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 获取下拉框已选值 
    使用getFirstSelectedOption()获得所选的项,再通过getText()获得值:

    select. getFirstSelectedOption().getText()

6.复选框

7.单选按钮

//选中
click();
//判断单选框是否被选中,返回布尔值
isSelected();
  • 1
  • 2
  • 3
  • 4
  • 5

8.页面弹框处理(alert)

//声明对话框变量
Alert alert = driver.switchTo().alert();
//获取弹框中的文字
alert.getText()
//点击弹框中的确定
alert.accept();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

9.表单(Form)

Form 中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交:

WebElement approve = driver.findElement(By.id("approve"));
approve.submit();
//只适合于表单的提交,例如百度搜索框输入关键字后按回车键进行搜索
  • 1
  • 2
  • 3
  • 4

10.上传文件

//定位上传控件
WebElement upload = driver.findElement(By.id("替换成实际的定位的值"));
//定义了一个本地文件的路径
String filePath = "d:\text.txt";
//为上传控件进行赋值操作,将需要上传的文件的路径赋给控件
upload.sendKeys(filePath);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

11.拖拉

//定义第一个元素
WebElement element1 =driver.findElement(By.XX));
//定义第二个元素
WebElement element2= driver.findElement(By.XX));
//将第一个元素拖拽到第二个元素
(new Actions(driver)).dragAndDrop(element1, element2).perform();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

12.鼠标悬停

Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.XX)).perform();
  • 1
  • 2
  • 3

13.滚动页面至某元素出现

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);", driver.findElement(By.XX));
  • 1
  • 2
  • 3

执行用例

使用TestNG中的@Test执行用例。 
@Beforeclass 在执行类之前执行, @Afterclass在执行类之后执行

输出结果

TestNG

TestNG自带的结果,html类型。

ReportNG

1.配置:

  • 下载 
    三个包:guice-3.0.jar,reportng-1.1.4.jar,velocity-dep-1.4.jar,导入到项目中;
  • 配置监听 
    Windows->preference-TestNG,配置如下图:

关闭默认监听,改为: 
org.uncommons.reportng.HTMLReporter

  • 配置xml文件 
    新增:

    <listener class-name="org.uncommons.reportng.HTMLReporter" />

注明:我放在了前面 
2.二次开发 
反编译工具:jd-gui.exe(打开导入文件即可)或jad.exe和net.sf.jadclipse_3.3.0.jar 
2.1 配置:

下载jad.exe和jadclipse(需要下载支持eclipse版本的,我的eclipse是4.3.0)。 
将jad.exe放在java目录下:E:\Program Files\Java\jdk1.8.0_05\jre\bin; 
下载地址:http://download.csdn.net/detail/shilinjie_8952/9674940 
将net.sf.jadclipse_3.3.0.jar拷贝到:XX\eclipse\plugins下面,重启eclipse 
打开之后,选择Eclipse->Window->Preferences->Java,设置如下图:

配置打开.class默认方式: 
.class和.class without source都要修改为默认值是JadClipse

  
注意:如果修改完成后,打开的.class文件全是注释,说明Jad的路径不正确。 
有时这个反编译的不好用,可以配合jd-gui.exe或者其他反编译软件一起查看源码。 
2.2 修改源码 
思路:新建一个工程,导入需要的包,按照ReportNG创建目录和java文件,肯定会有些错误,修改一(因为是反编译的,所以会有些问题)能编译通过就可以,(我的是最笨的,一个一个创建的java文件,应该有更好的办法)。按照需求修改源码,右键工程,就可以导出jar了。

元素管理

两种方法都可以对元素进行管理:

  1. Excel文件存储元素 
    可以将元素统一存储在excel中,在执行用例之前,统一读取到数组中,包括:编号,名称,查找方法,值,描述。

  1. 数据库存储元素 
    可以将元素通过工具直接插入到数据库中保存,在执行用例之前,统一读取到数组中,包括:编号,名称,查找方法,值,描述等字段。 

用例管理 
用例采用excel进行管理,用sheet区分不同功能,储存相关需要验证的字段,固定列:第一列(编号),倒数第二列(预期结果),最后一列(错误类型),三列固定的值,用于在代码中使用。 

持续集成

采用Jenkins+Ant+Svn实现。 
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目、监控外部调用执行的工作。 
Ant:形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,这里用来:从svn上签出到某个文件夹下—>编译—>执行用例

Jenkins配置

  1. 安装jdk 
    步骤参考本文环境搭建-Java运行环境。
  2. 下载Jenkins 
    通过官网下载:https://jenkins.io/index.html 

下载下来的是一个msi文件,直接点击安装,默认安装,时间挺长的,而且好多插件装不上,没关系,用到再哪个装哪个。 
装完之后,访问:http://127.0.0.1:8080/ ,需要登录,登录名:admin,admin的密码保存在安装目录Jenkins\secrets\initialAdminPassword文件中。 
3. 插件安装 
Ant Plugin Ant Plugin:执行build.xml 文件 
SVN Publisher plugin:通过SVN签出源码 
HTML Publisher Plugin:将测试结果显示在Jenkins中 
4. 系统配置 
系统管理—Global Tool Configuration,配置jdk和ant 

注意:登录就去有时会报错,错误大概就是插件没有安装好,去系统设置里面,找一下报错的插件,装上就好了。步骤如下: 

找到插件,勾选,点击下面直接安装: 

安装过程中可能会出现下载插件失败的情况,可以根据失败提示中的下载地址,下载到本地,选择“高级”上传下载的插件,就会自动安装了:

节点配置: 
有时候没有选项:Launch slave agents using Java Web Star 
解决:系统管理-Configure Global Security-随机选取勾上 tcp port for JNLP agents,原来是禁用的

Ant配置

  1. Jdk安装 
    参考本文环境搭建-Java运行环境
  2. Ant 
    下载:http://ant.apache.org/srcdownload.cgihttp://download.csdn.net/detail/shilinjie_8952/9689638下载。 

环境变量: 
ant_home:E:\ant\apache-ant-1.9.7-bin\apache-ant-1.9.7,bin目录所在路径 
Path: %ANT_HOME%\bin ant.bat所在路径 
在doc下,测试:ant.bat,出现下图配置成功:

Jenkins使用

1.创建节点 
 
点击ok 
进入配置节点: 

创建好之后,如下图: 

启动节点:点击“Launch”,下载,之后,双击下载到的slave-agent.jnlp文件,或在doc下执行红框中的那一串(我用命令启动提示Unable to access jarfile slave.jar),都可以启动,启动好如下图: 

2.创建任务 

点击“创建一个新任务”,填写任务名称,选择自由风格,如下图: 

设置源码管理:添加svn源码路径,设置svn的用户名密码 

构建触发器:设置何时什么频率进行构建 
图~~

我设置的是:每天17点28分构建,28 17 * * *说明: 
第一个参数代表的是分钟 minute,取值 0~59; 
第二个参数代表的是小时 hour,取值 0~23; 
第三个参数代表的是天 day,取值 1~31; 
第四个参数代表的是月 month,取值 1~12; 
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。 
所以 28 17 * * * 表示的就是每天的17点28构建一次。 
构建:选择Execute Windows batch command,填写ant 

或者选择Invoke Ant: 

构建后,需要显示一下测试报告,采用publish html report方式,实际上就是读取一个html文件,显示在jenkins里面的Html Report中 

到此,任务就创建好了。 
构建的过程是:先利用svn签出源码,然后根据构建中的ant命令或Invoke Ant方式执行构建,实际上就是在源码文件夹中寻找build.xml文件,并执行,接下来需要说明一下被执行的build.xml文件如何配置。 
3.配置build.xml文件 
这个配置很重要,决定了能否执行测试用例 
 
4.构建 
可以按照构建触发器中的设置进行构建,也可以立刻构建查看各项是否设置正确:

构建过程中查看控制台,可以查看到过程:

执行完用例之后,通过HTML Report查看结果

问题与解决方法

1.问题:构建过程中,不显示浏览器 
解决方法:不使用系统级服务,而是手动启动Jenkins。 
我的电脑->管理->服务和应用程序->服务,将jenkins服务禁用,并且禁止启动,自行用命令启用

    java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar "E:\Program Files (x86)\Jenkins\jenkins.war"

最好写成bat文件,内容:

echo "Jenkins CI automation testting"
java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar "E:\Program Files (x86)\Jenkins\jenkins.war"
pause

每次启动通过bat文件启动

2.问题:构建报错:编码GBK的不可映射字符 
解决方法:在build.xml中,javac下,增加,build.xml中有注释。 
3.问题:报告显示不正确,index中没有值 
解决方法:在启动时,用:java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar “E:\Program Files (x86)\Jenkins\jenkins.war”启动。 
4.遗留问题:操作后,需要向测试人员发送邮件,邮件发送失败提示:SendFailedException
message: 553 authentication is required,126
smtp7,DsmowADX5VYXxztYRH8tCQ–.15695S2 1480312600。待解决。

原文地址:https://www.cnblogs.com/peachh/p/12026283.html

时间: 2024-10-09 12:20:19

我的自动化测试历程(Selenium+TestNG+Java+ReportNG+Jenkins)的相关文章

自动化测试历程 selenium+testng+java+reportng+jenkins

测试环境:java+selenium+testng,jenkins持续集成 代码结构 采用页面对象模型(Page Object),减少UI修改后,对代码的影响. java编写 搭建环境 java运行环境 JDBC配置  java开发工具 相关包导入 浏览器 页面元素 定位 元素操作 执行用例 输出结果 TestNG ReportNG 元素管理 持续集成 Jenkins配置 节点配置 Ant配置 Jenkins使用 问题与解决方法 原文地址:https://www.cnblogs.com/wula

selenium+testng+java+poi进行excel的数据参数化

一,首先要配置好环境selenium+testng和poi包,selenium+testng的环境搭建就不细说了,这里有poi的包的分享https://pan.baidu.com/s/1BJEIWR57_4vwrCDy6WuBWA 下载后在项目里面添加lib文件再把所需要的poi包放入其中,并在项目里面导入其java build path中. 二,新建立一个Excel数据表. 三,代码如下: import org.testng.annotations.Test;import org.testng

Selenium TestNG Java环境搭建过程中所遇问题汇总

[问题一]运行时报Unalbe to connect to host 127.0.0.1 on port 7855 [问题分析]Selenium版本与火狐版本不一致,需要下载对应的版本 [解决方式]根据Selenium版本下载对应的火狐版本,版本具体对应方式可以查看官网相关说明(http://www.seleniumhq.org/download/) [问题二]运行时报Main函数错误 [问题分析]由于当前运行JAVA版本为JDK1.6,版本较低,需要高版本的JDK [解决方式]卸载JDK1.6

Selenium+TestNG+Java报错:org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40)

报错信息: at org.testng.TestClass.getInstances(TestClass.java:100) at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40) "java.lang.IllegalStateException"? 原因:对应浏览器的driver文件配置不正确 解决方法:安装相应的浏览器driver https://github.com/Selen

Mac系统搭建java+selenium+testng环境

Mac系统搭建java+selenium+testng环境: 1.   配置java环境,安装eclipse 2.  离线安装testng插件 3.  配置maven环境 4.  安装谷歌浏览器,下载对应浏览器版本的chromedriver 陆陆续续遇到的一些小问题记录: 1.  testng是使用离线方式安装的,离线包下载地址:http://dl.bintray.com/testng-team/testng-eclipse-release/ 下载完成后将其放到eclipse的dropins文件

通过junit/TestNG+java 实现自动化测试

第一步 安装JDK JDk1.7. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 一路猛击'下一步',OK.安装完成后配置环境变量: JAVA_HOME = E:\Java\Java\jdk1.7.0_15 PATH = %JAVA_HOME%\bin CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tool

Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)

简介 其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识.希望大家茅塞顿开 ,有着更进一步认识和了解测试组. 一.Test Group(测试组) TestNG 允许你将复杂的测试方法归类为不同的组.不仅仅是可以声明某个方法属于某个组,而且还可以让组包含其他的组.这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合.这样,如果你打算将测试分成两份的时候,就无需重新编译.这个特点,会给你在划

Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)

1.-依赖注入 TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行). 1.1-本机依赖项注入 TestNG允许您在方法中声明其他参数.发生这种情况时,TestNG将自动用正确的值填充这些参数.依赖注入可以在以下地方使用: 任何@Before方法或@Test方法都可以声明ITestContext类型的参数.任何@AfterMethod方法都可以声明ITestResult类型的参数,该参数将反映刚刚运行的测试方法的结果.任何@Bef

Ant学习-001-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案

Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 在日常的 Java 开发应用中,使用较为广泛(类似的项目构建工具还有 maven,感兴趣的可自行了解),同时也多是持续集成框架中的组成成员,因打算打造自己的自动化测试集成框架,因而今天尝试了一下(感谢大神 伟神 提供的 build.xml 文件和此过程中的远程支持,非常感谢!) 今天学习 ant 构建应用,通过 ant 执行 TestNG 测