今天,我想帮助您更好地管理自动GUI测试(Selenium)。 在过去,我已经看到人们处理此问题的许多不同方式。 有些人只是用Selenium-IDE编写普通HTML TestCases,将其存储在HDD上的某个位置,并在需要时手动运行。 其他人甚至不使用Selenium-IDE。 他们为Example编写纯Java,并使用JUnit自动执行。 我今天的解决方案介于两者之间。

前提

  • 我想要用Selenium-IDE创建的纯HTML TestCases。 这样一来,几乎没有编程技能的人仍然可以创建它们。
  • 我希望这些GUI测试在构建过程中自动运行,因此我的CI工具可以在发生错误时通知我。
  • 由于测试随源一起增长,因此我还希望项目存储库中的Versioncontrol下的所有TestCases。
  • 我希望付出最少的努力,取得最高的结果。 因此,我不想从HTML TestCases中导出JUnit测试,因为它可能是重复的,并且我想坚持DRY原则。

首先,我在我的项目中为Selenium-Tests创建一个文件夹。

资料夹结构

TestSuite示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta content="text/html; charset=UTF-8" http-equiv="content-type"/><title>Test Suite</title>
</head>
<body>
<table id="suiteTable" cellpadding="1" cellspacing="1" border="1" class="selenium"><tbody><tr><td><b>Test Suite</b></td></tr><tr><td><a href="./SomeTest1.html">SomeTest1</a></td></tr><tr><td><a href="./SomeTest2.html">SomeTest2</a></td></tr></tbody>
</table>
</body>
</html>

示例测试

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><link rel="selenium.base" href=""/><title>SomeTest1.html</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1"><thead><tr><td rowspan="1" colspan="3">SomeTest1</td></tr></thead><tbody><tr><td>open</td><td>/</td><td></td></tr><tr><td>waitForElementPresent</td><td>//div[@id='someId']</td><td></td></tr><tr><td>click</td><td>css=button.create</td><td></td></tr><!-- Some Steps --><tr><td>assertText</td><td>//div[@id='someId']</td><td>${expectedText}</td></tr></tbody>
</table>
</body>
</html>

设置Web服务器

所以我有我的TestSuite。 但是我该如何运行它们? 最重要的是,它应该在Maven Build Process中运行,因此它也可以在Jenkins-CI或其他任何版本上运行。 在针对实际运行的WebApp进行测试时,这是每个定义的IntegrationTest。 在Maven中,我们有机会在集成测试阶段中运行此类测试。 如果您想了解有关Maven Build生命周期及其各个阶段的更多信息,请查看this 。 因此,我们需要某种WebServer来运行我们的WebApp,否则测试将无法进行。 WebServer应该在集成测试阶段之前启动,然后再停止。 例如,我们可以使用Tomcat7或Jetty 。 在此示例中,我将使用tomcat7-maven-plugin。 我将pom.xml配置为启动Tomcat7 pre-integration-test

<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.0</version><executions><execution><id>tomcat-run</id><goals><goal>run-war-only</goal></goals><phase>pre-integration-test</phase><configuration><port>8080</port><fork>true</fork></configuration></execution><execution><id>tomcat-shutdown</id><goals><goal>shutdown</goal></goals><phase>post-integration-test</phase></execution></executions>
</plugin>

如果在CI服务器上运行多个项目,则可以考虑为每个项目使用不同的端口号。

最后:运行测试

最后但并非最不重要的一点是,我们需要运行测试。 幸运的是,有可用的selenium-maven-plugin可以完成这项工作。

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>selenium-maven-plugin</artifactId><version>2.3</version><configuration><browser>*firefox</browser><suite>src/test/selenium/TestSuite.html</suite><startURL>http://localhost:8080</startURL></configuration><executions><execution><id>run-selenium-tests</id><phase>integration-test</phase><goals><goal>selenese</goal></goals></execution></executions>
</plugin>

现在,每当我们在控制台中执行mvn clean verify或什至mvn clean install时,都会运行测试并将报告存储在目标目录中。 这也将由您的CI工具完成。

结论

我们确实有完整干净的安装程序。

  • 我们有一个地方可以存储我们的测试,
  • 它们在Sourcecode和Version控件内
  • 它们可以由CI-Tools自动运行
  • 甚至非开发人员也可以添加新的TestCases

顺便说一句:如果某些事情没有按预期进行,请不要放弃。 Selenium似乎有点小问题,有时您必须掏点钱才能解决问题。 但它确实有效,我想通了。

参考: Be Be a Better Developer博客上的JCG合作伙伴 Gregor Riegler 提供的MavenSelenium测试自动化 。

翻译自: https://www.javacodegeeks.com/2013/07/selenium-test-automation-with-maven.html

使用Maven进行Selenium测试自动化相关推荐

  1. selenium自动化测试_维持Selenium测试自动化的完美方法

    selenium自动化测试 毫无疑问, 自动浏览器测试已改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误的Web应用程序. 但是有时,甚至IT部门也误解了 ...

  2. 使用Maven进行硒测试自动化

    今天,我想帮助您更好地管理自动GUI测试(Selenium). 在过去,我已经看到人们处理此问题的许多不同方式. 有些人只是使用Selenium-IDE编写这些普通HTML TestCases,将其存 ...

  3. Maven硒测试自动化教程

    在进行测试自动化项目时,您需要与之关联的所有Selenium依赖项. 通常,这些依赖项是在项目生命周期中手动下载和升级的,但是随着项目规模的扩大,管理依赖项可能会非常困难. 这就是为什么需要构建自动化 ...

  4. selenium优缺点_Selenium测试自动化工具的优缺点

    selenium优缺点 谁不喜欢深背景的命名故事? 在2000年代初期,一家名为Mercury Interactive的公司通过其工具Astra Quick Test统治了测试自动化领域. 这不是可以 ...

  5. 使用Selenium WebDriver测试自动化的22条实用技巧

    使用Selenium进行测试自动化已使全球的网站测试人员能够轻松执行自动化的网站测试. Webdriver是Selenium框架的核心组件,通过它您可以针对不同类型的浏览器(例如Google Chro ...

  6. 自动化比手工测试成本高?使用Selenium评估测试自动化的ROI指标

    跨浏览器测试是一种测试,需要大量的精力和时间.通过不同的浏览器,操作系统,设备,屏幕分辨率测试Web应用程序,以评估针对各种受众的Web内容呈现的过程是一项活动. 特别是如果手动处理,使用Seleni ...

  7. MavenSelenium测试自动化教程

    在进行测试自动化项目时,您需要与之关联的所有Selenium依赖项. 通常,这些依赖项是在项目生命周期中手动下载和升级的,但是随着项目规模的扩大,管理依赖项可能会非常困难. 这就是为什么需要构建自动化 ...

  8. 维持硒测试自动化的完美方法

    毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序. 但是有时,甚至IT部门也误解了自动化一词. 大多数人认为计 ...

  9. selenium自动化测试_Selenium测试可实现有效的测试自动化

    selenium自动化测试 尽管移动应用程序的市场份额有大幅增长,但网络应用程序仍然具有大量的用户基础. 在部署之前,企业正在关注Web应用程序的质量. 这是测试发挥重要作用的地方. 与某些可以自动化 ...

最新文章

  1. 报名 | 期末考后,快来打比赛赢万元奖金!(北京上海)
  2. thinkPHP5.0中使用header跳转没作用
  3. c语言容斥原理,容斥原理 | 易学教程
  4. 让 jQuery UI draggable 适配移动端
  5. 2020 年 Service Mesh 技术展望
  6. 雷军:启动手机+AIoT双引擎战略 5G春天到来前打持久战
  7. STM32 串口接收流程-串口接收中断
  8. 对上一篇博客问题的回应
  9. modern php笔记---2.1、特性(命名空间、特性、性状)
  10. fuelux.tree,动态加载
  11. 在计算机桌面中选择了隐藏如何显示,怎么把隐藏电脑桌面游戏找到
  12. ArcGIS教程:空间参考和地理处理
  13. 郭天祥 十天搞定单片机 (1)基础知识和点亮发光二极管
  14. ConfuserEx 脱壳软件 使用教程
  15. yum源的三种安装配置方式,总有一款适合你
  16. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping
  17. 计算机试题ab级,计算机等级考试一级模拟试题及答案(2套)
  18. 打印表格留标题怎么设置_打印Excel表格时每页都打印标题行的设置方法
  19. 惠普 ProBook 笔记本下的 WIN10 解决 VMware 开启Intel VT-x问题
  20. python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟

热门文章

  1. SpringCloud Ribbon(六)之服务实例过滤器ServerListFilter
  2. Hadoop生态hive(三)Hive QL介绍
  3. Eclipse下导入外部jar包的3种方式
  4. 解析HTTP协议六种请求方法,get,head,put,delete,post有什么区别
  5. Spring Boot功能实战
  6. Java Map集合面试题汇总
  7. 02-MyBatis配置SQL打印
  8. 刚刚,改造了下BaseDao……
  9. 自动配置原理---SpringBoot
  10. java中int转成String位数不足前面补零 java格式化2位数不足补零