并行运行 Selenium HTML(Selenese)测试用例






4.29/5 (4投票s)
本文将解释如何在不使用 Selenium Grid 的情况下,减少 Selenium HTML 测试用例的执行时间。
引言
本文解释了如何并行运行基于 Selenium HTML (Selenese) 的测试套件,从而在不使用 Selenium Grid 的情况下减少执行时间。
背景
目前 Selenium Grid 支持运行用 C#、Java、Ruby 和 PHP 编写的 Selenium 测试。但没有为 Selenese 测试用例提供客户端驱动程序。本文提出的方案是一种并行运行 Selenese 测试用例以减少执行时间的解决方法。
实际场景:在采用这种方法之前,我们在 Selenium Functional Test Runner 中执行我们的 Selenese 测试,在浏览器中并行执行 8 个测试套件需要大约 2 小时。使用这种方法,我们将执行相同 8 个测试套件的时间缩短到 15 分钟。
Using the Code
附带的 zip 文件是一个示例 ANT 构建脚本,它通过在不同的 Selenium Remote Control 中并行初始化测试套件来执行测试套件。要设置环境,您需要在您的机器上安装以下工具:
- ANT
- Psexec
- Selenium Remote Control
- Subversion(可选:如果测试用例在 subversion 仓库中)
以下代码片段根据您的环境设置所需的路径。例如,Selenium Server 的路径、基本 URL、Selenium 测试的路径以及保存生成的 Selenium 报告的路径。
<!-- Path to Selenium Server Binaries-->
<property name="SeleniumServerPath" value="C:\Path-to-Selenium-Server" />
<!--Path to base url-->
<property name="baseURL" value="https://url-to-your-application"/>
<!--<Path to Selenium Tests-->
<property name="SeleniumTestsPath" value="C:\Path-to-SeleniumTests"/>
<!--Path to Selenium Results-->
<property name="SeleniumReports" value="C:\Path-to-Reports" />
以下代码片段从 subversion 更新测试文件,并调用 FirstTestSuite
文件的目标。
<!-- This target will be used to update your selenium tests from Subversion -->
<target name="svn">
<exec dir="${SeleniumTestsPath}" executable="svn">
<arg line="update --username usr --password pwd" />
</exec>
<antcall target="FirstTestSuite">
</antcall>
</target>
以下代码片段在端口 4444 上初始化第一个 Selenium Server,在端口 4445 上初始化第二个 Selenium Server,以并行执行第一个和第二个测试套件文件。(注意:将用户扩展文件放在与测试套件文件相同的文件夹中。)
请注意,Selenium Server 使用 psexec 初始化,以便 ant 可以获得控制权来初始化第二个 Server。此外,包含 15 秒的睡眠时间,以便第一个 Selenium Remote Control 在初始化第二个 Selenium Remote Control 之前有足够的时间来准备新的 Firefox 配置文件。否则,它将抛出无法创建 Firefox 配置文件的错误。
<target name="FirstTestSuite">
<exec dir="${SeleniumServerPath}" executable="psexec.exe" spawn="true">
<arg line="-d -i java -jar
selenium-server.jar -port 4444 -singlewindow -htmlSuite *firefox ${baseURL}
${SeleniumTestsPath}\FirstTestSuite.html
${SeleniumReports}\Results_FirstTestSuite.html" />
</exec>
<sleep seconds="15" />
<antcall
target="SecondTestSuite"/>
</target>
<target name="SecondTestSuite">
<exec dir="${SeleniumServerPath}" executable="psexec.exe" spawn="true">
<arg line="-d -i java -jar
selenium-server.jar -port 4445 -singlewindow -htmlSuite *firefox ${baseURL}
${SeleniumTestsPath}\SecondTestSuite.html
${SeleniumReports}\Results_SecondTestSuite.html" />
</exec>
<sleep seconds="15" />
<antcall
target="ThirdTestSuite"/>
</target>
关注点
可以将大型测试套件文件分成较小的部分,以便并行执行它们。在 Selenium Grid 提供 HTML 客户端驱动程序以并行执行 Selenese 测试用例之前,这种方法很有帮助。
历史
- 2009 年 12 月 1 日:初始发布