【发布时间】:2019-11-21 09:08:56
【问题描述】:
我们正在尝试在我们的 Windows Slaves 上运行来自 Jenkins 的 Selenium 测试作为 Gradle 项目。
我可以从 bat 命令gradle clean Smoke_Test 启动 Selenium,测试执行开始,但它在后台打开浏览器(测试用例失败,它说找不到可以点击的按钮)。如果我在 windows VM 上手动运行gradle clean Smoke_Test,它会启动 Selenium,在前台打开浏览器并成功执行测试。
Jenkins 启动 Selenium 测试时是否可以在前台打开浏览器?
我已尝试授予 Jenkins-Slave Windows 服务权限以允许服务与桌面交互,但它仍然不起作用。
编辑:我必须将 Jenkins 作为服务运行,因为 Windows Server 是从属服务器。由于企业限制,我无法运行java -jar Jenkins.war。
【问题讨论】:
-
无法使用 Jenkins 在前台打开浏览器,因为它作为 Windows 服务运行。此外,真正的问题是它找不到元素。老实说,我敢打赌,您在尝试查找元素时遇到了导致失败的竞争条件。我认为您正在尝试解决错误的问题,即使您在前台打开了浏览器,我敢打赌测试仍然会因为同样的原因而失败。
-
如果我手动触发测试,那么 Selenium 能够单击该按钮,并且能够成功执行测试用例。我不确定为什么在后台运行时会导致此问题。
-
问题是它在两个不同的上下文中运行,并且可能在两台不同的机器上运行,具有两种不同的处理器和性能。在 Jenkins 服务器上运行的测试可能执行得较慢,由于 selenium 和正在测试的网页之间的竞争条件而导致失败。
-
在单台机器上运行。仅限于一个会话,并确保一个人正在使用它,但它仍然无法正常工作。如果存在竞争条件,那么我假设在多次试验中,我应该只在某些条件下得到错误,但我每次都会得到相同的错误。
-
jenkins 是否在您使用批处理文件运行测试的同一台机器上运行?
标签: windows selenium google-chrome jenkins