繁体   English   中英

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed using ChromeDriver Selenium in Jenkins on Ubuntu 18.04

[英]org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed using ChromeDriver Selenium in Jenkins on Ubuntu 18.04

Chrome 在我的 Jenkins 上不稳定。 当我运行 build 5 次时,它运行 1 - 2 次成功,另外 3 次出现上述错误。

错误快照: 在此处输入图像描述

铬的代码:

ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.get("https://mywebsite.com");
     

我已经采取了一些步骤:

  1. 为 google chrome 和 chrome 驱动提供 777 权限

  2. 设置:在构建之前启动 Xvfb,并在 Jenkins 构建设置中将其关闭为 True 在此处输入图像描述

  3. ChromeDriver 81.0.4044.69

  4. 谷歌浏览器 81.0.4044.129

  5. Ubuntu 18.04.4 LTS(GNU/Linux 4.15.0-99-通用 x86_64)

此错误消息...

快照

...意味着ChromeDriver无法启动/产生新的浏览上下文,即Chrome 浏览器session。


深潜

查看您提供的错误堆栈跟踪的快照,尽管您提到了使用ChromeDriver 81.0.4044.69Google Chrome 81.0.4044.129 ,但您使用的不同二进制文件的版本之间仍然存在不匹配,可能是Chrome浏览器未安装在系统中的默认位置或由于 JDK 不匹配。 此外, ChromeDriver 81.0.4044.69 (2020-03-17)有点不稳定,已被ChromeDriver 81.0.4044.138 (2020-05-05)取代

但是,服务器(即ChromeDriver)希望您将Chrome安装在每个系统的默认位置,如下图所示:

Chrome_binary_expected_location

1对于 Linux 系统,ChromeDriver 期望/usr/bin/google-chrome成为实际 Chrome 二进制文件的符号链接。

您可以在什么是 ChromeDriver 的默认位置以及在 Windows 上安装 Chrome中找到详细讨论


解决方案

如果您在非标准位置使用Chrome可执行文件,则必须覆盖 Chrome 二进制位置,如下所示:

  • 基于代码的解决方案:

     System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); ChromeOptions options = new ChromeOptions(); options.setBinary('/usr/bin/google-chrome'); //chrome binary location options.addArguments("--headless"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); WebDriver driver = new ChromeDriver(options); driver.get("https://www.google.com/"); //execute the remaining steps driver.quit();
  • 其他注意事项 - 确保以下事项:

    • JDK升级到当前级别JDK 8u251
    • Selenium升级到当前级别版本 3.141.59
    • ChromeDriver已更新至当前ChromeDriver v81.0.4044.138级别。
    • Chrome已更新至当前Chrome 版本 81.0.4044.138级别。 (根据ChromeDriver v80.0 发行说明
    • 通过您的IDE清理您的项目工作区,并仅使用所需的依赖项重建您的项目。
    • 非 root用户身份执行您的@Test
    • 始终在tearDown(){}方法中调用driver.quit()以优雅地关闭和销毁WebDriverWeb 客户端实例。

参考

您可以在以下位置找到一些相关的讨论:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM