org.openqa.selenium.WebDriverException:未知错误:Chrome无法启动:在Ubuntu 18.04上的Jenkins中使用ChromeDriver Selenium导致崩溃

时间:2020-05-05 07:17:52

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

Chrome在我的Jenkins上不稳定。当我运行5次构建时,它运行1-2次成功,而其他3次则出现上述错误。

错误快照: enter image description here

Chrome代码:

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. Set:在Jenkins构建设置中,在构建之前启动Xvfb,并在将其设置为True之后将其关闭 enter image description here

  3. ChromeDriver 81.0.4044.69

  4. Google Chrome 81.0.4044.129

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

1 个答案:

答案 0 :(得分:2)

此错误消息...

snapshot

...表示 ChromeDriver 无法启动/产生新的浏览上下文,即 Chrome浏览器会话。


深潜

尽管您提到了有关使用 ChromeDriver 81.0.4044.69 Google 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 :< / p>

Chrome_binary_expected_location

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

您可以在What is default location of ChromeDriver and for installing Chrome on Windows

中找到详细的讨论

解决方案

如果在非标准位置使用 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
    • 已升级到当前级别Version 3.141.59
    • ChromeDriver 已更新为当前的ChromeDriver v81.0.4044.138级别。
    • Chrome 已更新为当前的 Chrome版本81.0.4044.138 级别。 (根据ChromeDriver v80.0 release notes
    • 通过 IDE
    • 清理项目项目工作区,并仅使用必需的依赖项重新构建项目
    • 非root用户用户的身份执行@Test
    • 始终在driver.quit()方法内调用tearDown(){},以优雅地关闭和销毁 WebDriver Web Client 实例。

参考文献

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