【问题标题】:Unable to Open Browser when running Selenium Test in Windows VMs from Jenkins在 Jenkins 的 Windows 虚拟机中运行 Selenium 测试时无法打开浏览器
【发布时间】: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


【解决方案1】:

正如@Greg 提到的,我试图解决一个错误的问题。由于我的 Chrome 驱动程序,我的测试用例在通过 Jenkins 执行时失败。我将 Chrome 驱动程序更改为 Headless 版本,并且测试用例通过了(当然是在后台使用 Chrome!)。

【讨论】:

    【解决方案2】:

    通过服务在某些桌面上进行交互式访问很棘手,几年前我浪费了一些时间,然后退回到不那么优雅但有效的解决方案:为某些用户配置自动登录并在自动启动中有一些 bat 文件以启动通过 jnlp 选项连接到 jenkins。编辑:最好等待几秒钟,然后从服务器下载 agent.jar,然后在其上启动连接。

    但是请注意,在 Java 11 中,该 jnlp 选项将被删除。那么可能需要一些特殊的插件。

    【讨论】:

    • 对不起,您也可以看看this的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2017-10-23
    • 2018-10-27
    • 2016-12-30
    • 2018-02-01
    相关资源
    最近更新 更多