java - org.openqa.selenium.WebDriverException : unknown error: Chrome failed to start: crashed (headless chrome)

标签 java maven selenium selenium-chromedriver google-chrome-headless

我在 centos 上运行 headless chrome,headless chrome 版本为 2.38,google-chrome-stable 版本为 67.0

System.setProperty("webdriver.chrome.driver", driverPath);
    log.warn("chrome driver path is : {}", driverPath);
    List<String> options = proxyConfig.getChromeOptions();
    ChromeOptions chromeOptions = new ChromeOptions();
      chromeOptions.addArguments(options);
    Map<String, String> capabilites = proxyConfig.getCapabilities();
    if(MapUtils.isNotEmpty(capabilites)) {
      for (Map.Entry<String, String> entry : capabilites.entrySet()) {
        chromeOptions.setCapability(entry.getKey(), entry.getValue());
      }
    }
    // proxy configuration
    /*Proxy proxy = new Proxy();
    proxy.setProxyType(Proxy.ProxyType.MANUAL);
    proxy.setHttpProxy(proxyConfig.getProxyHost());
    proxy.setSocksUsername(proxyConfig.getProxyUsername());
    proxy.setSocksPassword(proxyConfig.getProxyPassword());
    chromeOptions.setCapability(CapabilityType.PROXY, proxy);*/
    log.warn("chorme driver created ");
    return new ChromeDriver(chromeOptions);

Chrome 选项:

 "--headless", 
        "----disable-gpu", 
        "--ignore-certificate-errors", 
        "window-size=1920,1080"

它在最后一行给出了以下给出的错误消息:

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Linux 4.9.77blibli.com x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.11 seconds
Build info: version: ‘3.6.0’, revision: ‘6fbf3ec767’, time: ‘2017-09-27T15:28:36.4Z’
System info: host: ‘csrapp-02’, ip: ‘127.0.1.1’, os.name: ‘Linux’, os.arch: ‘amd64’, os.version: ‘4.9.77dwdwde.com’, java.version: ‘1.8.0_101’
Driver info: driver.version: ChromeDriver

我已经验证了chrome和chromedriver版本,它是兼容的。不明白为什么它不能在centos上运行? 相同的代码在 mac 上运行良好

pom

<dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.12.0</version>
    </dependency>

最佳答案

此错误消息...

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed

...意味着 ChromeDriver 无法启动/生成新的 WebBrowser,即 Chrome 浏览器 session 。

由于您在 CentOS 上使用Headless Chrome,因此值得一提的是,根据讨论 Getting Started with Headless Chrome --disable-gpu如果在 Windows 上运行则暂时需要。

--disable-gpu \                # Temporarily needed if running on Windows.

但是,您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 您正在使用 chromedriver=2.38
  • 您正在使用chrome=67.0
  • 您的 Selenium 客户端版本为 3.6.02017-09-27T15:28:36.4Z几乎一岁大了。
  • 您的JDK版本1.8.0_101,这是相当古老的。

因此,JDK v8u101Selenium Client v3.6.0ChromeDriver v2.38 之间存在明显不匹配Chrome 浏览器 v67.0

解决方案

  • JDK 升级到最新级别 JDK 8u171 .
  • Selenium升级到当前级别 Version 3.12.0 .
  • ChromeDriver升级到当前的ChromeDriver v2.40级别。
  • Chrome 版本保持在 Chrome v66-68 级别之间。 (as per ChromeDriver v2.40 release notes)
  • 通过IDE清理您的项目工作区,并仅使用所需的依赖项重建项目。
  • 使用CCleaner工具可以清除执行测试套件之前和之后的所有操作系统杂务。
  • 如果您的基本网络客户端版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和已发布版本的Web 客户端
  • 重新启动系统
  • 执行您的@Test
  • 始终在 tearDown(){} 方法中调用 driver.quit() 来关闭和销毁 WebDriverWeb Client 优雅地实例化。

关于java - org.openqa.selenium.WebDriverException : unknown error: Chrome failed to start: crashed (headless chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50830193/

相关文章:

可以从sql生成图表的Java库

java - Dropwizard 示例包编译错误

c# - Visual Studio - 使用特定 TestCategory 值运行自动化测试方法

java - Flash AS3 将我的 var 数据传递到另一个框架

java - 如何修复 GridBagLayout 按钮大小

unit-testing - 使用 IVY 解析器进行 Grails 2.3 单元测试

java - Ubuntu:Gradle Maven-发布插件-无法通过sftp连接

python - 如何删除特殊字符并删除字符之间的空格?

java - 无法获取或设置 sendkeys 命令的参数映射中的值

java - 如果放置在库 jar 中,则不会拾取 Bean 验证配置