Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试

本文详述如何在Jenkins中执行服务器端自动化测试,包括HeadlessChrome与chromeDriver配置,Maven pom.xml配置,以及如何通过不同profile执行特定testng.xml文件。同时介绍了测试结果查看方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Jenkins本地执行测试 or 服务器端执行测试

测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择。

经过探讨,最终决定采用服务端执行测试。自动化测试代码上传到测试服务器,通过jenkins部署并执行,可减少本地资源占用。

2. 服务器端执行测试,需要的browser & webDriver

鉴于公司测试服务器为无界面的Linux系统,浏览器采用无界面的chrome。即,在服务器安装Headless Chrome。

webDriver选用chromeDriver对应版本。chromeDriver下载:http://npm.taobao.org/mirrors/chromedriver/

1 ChromeOptions options = new ChromeOptions();
2 options.setHeadless(true);
3 return new ChromeDriver(options);
3. pom.xml配置
  1 <project xmlns="http://maven.apache.org/POM/4.0.0"
  2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5 
  6     <groupId>com.hebg3</groupId>
  7     <artifactId>UITest</artifactId>
  8     <version>0.0.1-SNAPSHOT</version>
  9     <packaging>jar</packaging>
 10 
 11     <name>UITest</name>
 12     <url>http://maven.apache.org</url>
 13     <profiles>
 14         <profile>
 15             <id>saveOrder</id>
 16             <build>
 17                 <plugins>
 18                     <!-- 测试运行器,用于运行测试用例 -->
 19                     <plugin>
 20                         <groupId>org.apache.maven.plugins</groupId>
 21                         <artifactId>maven-surefire-plugin</artifactId>
 22                         <version>2.19.1</version>
 23                         <configuration>
 24                             <suiteXmlFiles>
 25                                 <!-- 添加testng.xml文件,相当于run as testngSuite -->
 26                                 <suiteXmlFile>src/test/resources/saveOrder.xml</suiteXmlFile>
 27                             </suiteXmlFiles>
 28                             <source>${java.version}</source>
 29                             <target>${java.version}</target>
 30                             <showWarnings>true</showWarnings>
 31                         </configuration>
 32                     </plugin>
 33                     <!-- 可执行jar插件 -->
 34                     <plugin>
 35                         <groupId>org.apache.maven.plugins</groupId>
 36                         <artifactId>maven-jar-plugin</artifactId>
 37                         <!-- 将src/test文件夹打成jar包 -->
 38                         <executions>
 39                             <execution>
 40                                 <goals>
 41                                     <goal>test-jar</goal>
 42                                 </goals>
 43                             </execution>
 44                         </executions>
 45                         <!-- 打包配置 -->
 46                         <configuration>
 47                             <outputDirectory>${project.build.directory}</outputDirectory>
 48                             <archive>
 49                                 <manifest>
 50                                     <addClasspath>true</addClasspath>
 51                                     <classpathPrefix>lib/</classpathPrefix>
 52                                 </manifest>
 53                                 <manifestEntries>
 54                                     <Class-Path>.</Class-Path>
 55                                 </manifestEntries>
 56                             </archive>
 57                             <!-- 打包时不包含以下格式的文件 -->
 58                             <excludes>
 59                                 <exclude>**/*.xml</exclude>
 60                                 <exclude>**/*.properties</exclude>
 61                                 <exclude>**/*.csv</exclude>
 62                             </excludes>
 63                         </configuration>
 64                     </plugin>
 65 
 66                     <!-- maven资源文件复制插件 -->
 67                     <plugin>
 68                         <groupId>org.apache.maven.plugins</groupId>
 69                         <artifactId>maven-resources-plugin</artifactId>
 70                         <version>3.1.0</version>
 71                         <executions>
 72                             <!-- 复制src/main/resources路径的文件 -->
 73                             <execution>
 74                                 <id>copy-resources</id>
 75                                 <phase>validate</phase>
 76                                 <goals>
 77                                     <goal>copy-resources</goal>
 78                                 </goals>
 79                                 <configuration>
 80                                     <outputDirectory>${basedir}/target/src/main/resources</outputDirectory>
 81                                     <resources>
 82                                         <resource>
 83                                             <directory>${project.basedir}/src/main/resources</directory>
 84                                             <includes>
 85                                                 <include>**/*.xml</include>
 86                                                 <include>**/*.csv</include>
 87                                                 <include>**/*.properties</include>
 88                                             </includes>
 89                                             <filtering>true</filtering>
 90                                         </resource>
 91                                     </resources>
 92                                     <encoding>UTF-8</encoding>
 93                                 </configuration>
 94                             </execution>
 95                             <!-- 复制src/test/resources路径的文件 -->
 96                             <execution>
 97                                 <id>copy-test-resources</id>
 98                                 <!-- here the phase you need -->
 99                                 <phase>validate</phase>
100                                 <goals>
101                                     <goal>copy-resources</goal>
102                                 </goals>
103                                 <configuration>
104                                     <outputDirectory>${basedir}/target/src/test/resources</outputDirectory>
105                                     <resources>
106                                         <resource>
107                                             <directory>${project.basedir}/src/test/resources</directory>
108                                             <includes>
109                                                 <include>**/*.xml</include>
110                                                 <include>**/*.csv</include>
111                                                 <include>**/*.properties</include>
112                                             </includes>
113                                             <filtering>true</filtering>
114                                         </resource>
115                                     </resources>
116                                     <encoding>UTF-8</encoding>
117                                 </configuration>
118                             </execution>
119                         </executions>
120                     </plugin>
121                 </plugins>
122             </build>
123         </profile>
124     </profiles>
125     <!-- 设置jdk版本与编码格式 -->
126     <properties>
127         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
128         <encoding>UTF-8</encoding>
129         <java.version>1.8</java.version>
130         <maven.compiler.source>1.8</maven.compiler.source>
131         <maven.compiler.target>1.8</maven.compiler.target>
132     </properties>
133 
134     <dependencies>
135         ……
136     </dependencies>
137 </project>
4. 打包命令

4.1 打包命令的执行

eclipse中右击项目名称 - 【Run As】-【Maven Build ...】,在goals处输入以下命令并运行;

4.2 打包:package -DskipTests=true -PsaveOrder

说明:-D跳过测试,直接打包,首先需要进行测试能否正常打包,之后再执行测试;

-P选择profile id(Line:15),不选择profile id会按默认执行,执行所有testng.xml,各插件版本也与设置的不同;

4.3 执行测试:test -PsaveOrder

4.4 配置jenkins:以上命令均能正常执行 -> 代码上传到git -> 运维大佬帮忙布置jenkins,jenkins执行的本质即,执行以上两条命令;

5. 多个testSuite的配置

当存在多个testng.xml文件,包含多个testSuite时,可以通过pom.xml设置多个profile来分别执行;

以上,Line14~123即为一个profile,可同时设置多个,根据不同情境,执行不同的profile;

我们目前的做法是:在部署jenkins项目时,输入profile id方可执行,实现了一个项目,多个测试情境按需使用;

6. 测试结果的查看

目前做法:在jenkins中添加了HTML Report、TestNG Results插件。

 

转载于:https://www.cnblogs.com/TaylorYoung/p/10213317.html

课程介绍你是否在寻找机会进入自动化测试领域? 你是否渴望学习selenium webdriver + Java以及最新的框架和技术进行web自动化测试? 你是否感兴趣学习Selenium如何用在你现有的项目里的? 这门课带你从Selenium搭建环境开始讲起,然后学习seleniumTestNG, logback, maven, jenkins。 我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。 例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。 全网没有其他课程像这门课涵盖到如此之深的细节。 您将会学到什么 学完课程以后,你将拥有完整的Selenium Webdriver知识 你将具备从头开始设计Page Object、Page Factory、DATADRIVEN等搭建自动化框架的能力 用100多个实例对Selenium现实场景应用进行深入理解 全面了解TestNG, Maven, Jenkins, HTML报告,多浏览器并行测试 了解数据库测试和使用Selenium进行性能测试 你将彻底了解testNG框架 你从网上随便选择一个网站,都可以实现自动化,用所有可能的测试用例进行自动化测试 将提高你的编码技能,以编写最优化的自动化测试用例代码 你基本可以搞定任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目 你应该能够使用应用程序的GUI来验证数据完整性 你将能够创建漂亮的报告来打动客户或领导 更深入地理解自动化指南和代码质量标准 会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化 【适合人群】 软件手动测试人员想转为自动化测试的人员 自动化软件测试人员想加强专业技能的 刚毕业学生想从事软件行业 QA 组长或项目经理 【课程优势】 学完课程以后,你将拥有完整的Selenium Webdriver知识 【讲师介绍】 资质介绍: 12年以上软件测试工作经验,其中7年以上自动化测试开发经验 新书“Python3+Selenium3自动化测试项目实战”作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值