【问题标题】:Browser does not open in Jenkins while executing selenium test执行 selenium 测试时浏览器未在 Jenkins 中打开
【发布时间】:2019-03-26 14:24:31
【问题描述】:

我正在尝试在Jenkins 中开始工作,它执行Selenium 脚本。几个月前它运行良好,但今天由于未知原因停止运行。这项工作一如既往地开始第一次测试,然后卡住了。我没有收到任何错误,之后什么也没有发生:

TEST STARTED: test
-------------------------------------------------------------------
[main] INFO net.serenitybdd.core.Serenity - TEST NUMBER: 1
März 26, 2019 3:02:23 NACHM. org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
Starting ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72) on port 46182
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
März 26, 2019 3:02:25 NACHM. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

我已经意识到,每次我使用 chrome 开始工作时,都会在任务管理器中添加一个新的 Google Chrome 进程,所以我假设 chrome 窗口正在显示。另外,当我杀死这个进程时,我得到了这个:

...
[1553694146.113][SEVERE]: Timed out receiving message from renderer: 10.000
[1553694146.113][WARNING]: screenshot failed, retrying
[1553694156.113][SEVERE]: Timed out receiving message from renderer: 10.000
[1553694166.118][SEVERE]: Timed out receiving message from renderer: 10.000
[1553694166.118][WARNING]: screenshot failed, retrying
[main] WARN net.thucydides.core.webdriver.WebDriverFacade - Failed to take screenshot (unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
 (Session info: chrome=73.0.3683.86)
 (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.17763 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DESKTOP-5QTQGUC', ip: '192.168.178.23', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.1'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 73.0.3683.68 (47787ec04b6e3..., userDataDir: C:\WINDOWS\TEMP\scoped_dir5...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:3697}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.86, webStorageEnabled: true}
Session ID: da5e7153b21e4cb075843ac4e541ab6f)
[main] ERROR net.thucydides.core.steps.ConsoleLoggingListener -
...

我已尝试更新Jenkins 和所有插件,更新了我的浏览器和网络驱动程序,关闭了防火墙和防病毒软件。到目前为止没有任何帮助。我仍然能够通过 ide 在本地运行所有测试,但不知道 Jenkins 出了什么问题,我无法运行我的测试。

任何想法,可能出了什么问题以及如何处理?

PS 它在 Firefox 中运行良好,但我也需要 chrome

【问题讨论】:

  • 它是前一段时间了,但是.. 检查您是否在系统上留下了 chrome 驱动程序的意外实例.. 在我的情况下,我正在使用 selenium 进行大规模测试,问题是我的脚本留下了很多chrome驱动程序的死实例..即使我试图回收chromedriver实例..在我的情况下,唯一的解决方案是解决这个问题,而且在我看来,异步运行selenium测试非常困难,我只是想指出。希望它能给你带来一些有用的信息。干杯
  • 几件事 1) 我们能否请您查看错误提到的代码,您在哪里使用DesiredCapabilities.chrome()。这将有助于了解它是如何启动的。 2) 直接启动 selenium 驱动程序,查看出现的命令提示符是否保持可见并且不会出现任何类型的错误。 3)你已经重新启动了这台机器,对吧? 4) 打开 Jenkins 时,您在网络浏览器上看到的只是 ERR_CONNECTION_REFUSED,仅此而已,就像纯文本一样?
  • @Asyranok 1) 如果您的意思是ERR_CONNECTION_REFUSED,当我尝试打开Jenkins 网页时,就会发生这种情况。我认为这与DesiredCapabilities.chrome() 无关。 2)我已经启动了。没有错误。 3)是的,我已经重新启动了。 4)完整的消息是这样的(The website is unavailable localhost has refused the connection. Try the following: Check connection Check Proxy and Firewall ERR_CONNECTION_REFUSED
  • 我使用的是 Firefox 98.0.1(64 位),我从 Jenkins 构建调用的硒测试没有启动浏览器。 Chrome 上的行为相同。所有测试都通过了,maven surefire 插件报告非常好。我觉得这与 Jenkins 推出无头浏览器有关。

标签: java selenium google-chrome jenkins selenium-webdriver


【解决方案1】:

此错误消息...

März 26, 2019 3:02:23 NACHM. org.openqa.selenium.remote.DesiredCapabilities chrome
INFO: Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
Starting ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72) on port 46182
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
März 26, 2019 3:02:25 NACHM. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

...暗示您使用了 DesiredCapabilities() 类的实例并为 chrome 进行了强制转换,但是在创建会话时检测到的方言是 W3C

作为一般意识:

  • ChromeChromeDriverOSS 投诉
  • GeckoDriver / FirefoxIEDriverServer / Internet ExplorerW3C 投诉.

您的代码块将帮助我们以更好的方式调试问题。也许尽管您使用了 DesiredCapabilities() 类并为 chrome 进行了强制转换,但在初始化时您已将 FirefoxDriver() 调用为:

WebDriver driver =  new FirefoxDriver();

解决方案

WebDriver的初始化改为:

WebDriver driver = new ChromeDriver();

【讨论】:

  • 我正在使用此模板项目 github.com/hypery2k/serenity_sample 的默认设置。如您所见,webDriver 实例正在自动设置,我只是在serenity.properties 中查看chromefirefox。它工作了几个月。我尝试使用firefox 来完成我的工作,并且效果很好。但我也需要chrome
  • @AndreiSuvorkov 总结是 Chrome 和 ChromeDriver 是 OSS 投诉,而 Firefox 和 IE 是 W3C 投诉。
【解决方案2】:

所以。我发现了一个问题,这是一个 Chronium 错误。更多信息可以找到here。我会尝试将 webdriver 和 chrome 降级到旧版本并分享结果。

编辑: 我已将我的 Chrome 降级为 Version 72.0.3626.81,并将 chromedriver 降级为 ChromeDriver 2.46。效果很好。

注意: 我发现阻止 Chrome 自动更新到最新版本有点棘手。 Here 你可以找到一些有用的技巧来处理它。我个人选择文件夹重命名))

【讨论】:

  • 我想在这里提一提...如果您从 eclipse maven 项目运行测试,它使用的是嵌入在 eclipse 中的 maven。对于 Jenkins,您可能正在使用安装在节点上的 maven。两次,在从 eclipse 和 Jenkins 运行项目时,它都使用不同版本的 maven。 maven 中可能存在一些未知问题,这就是它在本地启动浏览器而不是从 Jenkins 启动的原因。
【解决方案3】:

主要是由于兼容性问题(硒和铬驱动程序版本)。请参考http://chromedriver.chromium.org/downloads

Selenium Timed out receiving message from renderer

【讨论】:

    【解决方案4】:

    对于 Windows:

    我想添加 Jenkins 何时在浏览器中显示正在运行的自动化测试用例。

    首先,您不应该将 Jenkins 安装为 Windows 应用程序。 即使您这样做了,但不要启用“登录”选项卡下的“允许服务与桌面交互”复选框,那么 Jenkins 将不会被在浏览器中显示正在运行的测试用例。在哪里可以找到这个标签 -

    1) 在windows中,service选择Jenkins的服务

    2)打开服务的属性窗口->登录->勾选“允许服务与桌面交互”

    3) 您必须切换 NoInteractiveServices 注册表项

    4) 之后你应该重启服务,Jenkins。

    最佳方法 您应按如下方式从 war 文件中部署 Jenkins:

    1) 从 Jenkins 的官方网站下载 Jenkins.war。 (如果已经安装,只需转到 Jenkins 安装默认路径为“C:\Program Files (x86)\Jenkins\”的文件夹)

    2) 通过命令提示符部署:java -jar {directoryOfJenkinsFileInWindows}/jenkins.war

    3) 现在您可以通过 http://localhost:8080 访问 Jenkins 管理

    【讨论】:

    • 非常感谢,现在我可以运行 Jenkins。不知何故,它在 Windows 服务中被禁用。我已经在 Windows 服务中重新启动它并且它工作。但主要问题还没有解决
    【解决方案5】:

    工作解决方案 - 通过下载通用 Java 包(.war)安装 Jenkins,安装后浏览器将在运行 selenium 测试时自动打开。

    https://www.jenkins.io/download/

    请参考以下网址安装支持打开浏览器和运行测试的Jenkins。 https://itsforlavanya.blogspot.com/2020/08/jenkins-installation-install-jenkins-in.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2017-01-13
      相关资源
      最近更新 更多