由Jenkins运行时Selenium测试失败,但在命令行运行时成功

时间:2014-01-13 21:27:00

标签: selenium jenkins testng

我有两个运行Windows Server 2012的虚拟机。一个运行Jenkins,另一个运行Jenkins的构建作业。该作业从subversion中检出测试代码,然后在Windows批处理脚本中运行mvn test -Dtest=com.package.name.TestName。测试编译并运行,但失败并显示ElementNotVisibleException。这些是使用Selenium和Firefox驱动程序的TestNG测试。

如果我使用完全相同的命令并从Windows命令行运行它,则测试成功。我注意到的另一件事是,当从命令行运行时,浏览器窗口出现,我可以看到它运行测试,但是当由Jenkins运行时,没有窗口出现。

我发现this question表明这是因为我们的Jenkins作为服务运行,并且编写的测试需要前台的浏览器窗口。改变测试以使用无头驱动程序不是我们的选择,因为这将导致不准确的测试结果。有没有办法让这些测试与Jenkins一起使用?

3 个答案:

答案 0 :(得分:4)

我建议使用Selenium Grid。它的显式功能是同时提供多种不同的测试。

你的jenkins会针对网格启动测试,这会将所有测试指向你的节点。

答案 1 :(得分:1)

最好的选择是停止运行Jenkins作为Windows服务。打开命令窗口并手动启动Jenkins。就我而言,它有效。

答案 2 :(得分:0)

我们在firefox上使用jenkins运行我们的selenium测试时遇到了类似的问题。 Jenkins奴隶被安装为服务而firefox正在给麻烦。我们的解决方案是使用机器管理员创建的服务。您可以通过打开services.msc并右键单击jenkins服务 - >来完成此操作。属性 - >登录。选择此帐户并设置管理员凭据。重启服务,你就可以了。