今天,我想帮助您更好地管理自动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验证甚至mvn clean安装 ,都会运行测试并将报告存储在目标目录中。 这也将由您的CI工具完成。

结论

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

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

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

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

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

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

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

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

  2. Maven硒测试自动化教程

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

  3. 使用Maven进行Selenium测试自动化

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

  4. 硒测试可实现有效的测试自动化

    尽管移动应用程序的市场份额有大幅增长,但网络应用程序仍然以大量的用户群为主导. 在部署之前,企业正在快速关注Web应用程序的质量. 这是测试发挥重要作用的地方. 与某些可以自动化的功能测试不同,UI测 ...

  5. MavenSelenium测试自动化教程

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

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

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

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

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

  8. 硒测试中所需的功能和示例

    所需功能是用于声明一组基本要求(例如浏览器,操作系统,浏览器版本等的组合)的类,以对Web应用程序执行自动跨浏览器测试. 当我们尝试通过Selenium自动化测试来自动化测试脚本时,我们需要考虑这些组 ...

  9. 带有批注的Spring硒测试

    这篇文章描述了如何在Java中实现Selenium测试. 它的灵感来自Alex Collins的帖子,并带有注释. 该代码可在GitHub的Spring-Selenium-Test目录中找到. 一些替 ...

最新文章

  1. 数字图像处理:(4)二阶微分在数字图像处理中的应用
  2. shell脚本编程之控制脚本
  3. public virtual T GetT(string key, T defaultValue)
  4. linux 压缩 解压zip 命令
  5. STM32移植RT-Thread的串口只能接收一个字节数据的问题
  6. DL之DNN:利用DNN算法对mnist手写数字图片识别数据集(sklearn自带,1797*64)训练、预测(95%)
  7. 8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验
  8. 边缘计算高考题!全答对就可以去华为上班!
  9. asp.net通过webservice调用java接口全过程_100-RPC、RMI、WebService、httpClient、跨域、集群部署...
  10. 李飞飞团队发布:中国AI期刊影响力首超美国
  11. QMessageBox自定义大小
  12. APICloud学习笔记之div样式设置套路
  13. leveldb学习:DBimpl
  14. 最新版2017安装教程
  15. 软件测试报告模板怎么写,这篇文章告诉你
  16. 视频融合技术解决方案,三维全景拼接赋能平台
  17. OSAL多任务资源分配机制
  18. biopython----bio.PDB
  19. Docker搭建MySQL的PXC集群
  20. 64位系统上运行32位程序的内存限制

热门文章

  1. java中iscontinue意思_Java 中return、continue和break的区别
  2. ibatis(0)ibatis 与 mybatis 简述
  3. cassandra 备份_使用sstableloader恢复Cassandra Priam备份
  4. 方法参数泛型_无参数泛型方法反模式
  5. flex布局水平垂直 垂直_垂直和水平装饰
  6. wildfly管理控制台_WildFly 9 –别希望您的控制台像这样!
  7. OAuth 2.0 Java指南:5分钟保护您的应用程序安全
  8. 比较Java REST文档框架
  9. ddl hibernate_Hibernate:DDL模式生成
  10. Java的未来项目:巴拿马,织布机,琥珀和瓦尔哈拉