【问题标题】:chrome failed to start: exited abnormally in docker container on macoschrome 启动失败:在 macos 上的 docker 容器中异常退出
【发布时间】:2021-01-07 07:14:01
【问题描述】:

在我的 Mac 上,我在 Dockerfile 中使用 FROM selenium/standalone-chrome-debug:3.4.0-chromium 构建了映像。

当我在容器中运行我的应用程序时,我得到了:

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.19.76-linuxkit x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.13 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'a45e0250acbf', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.76-linuxkit', java.version: '1.8.0_121'
Driver info: driver.version: ChromeDriver

在 Jenkins 中构建的具有相同 Dockerfile 的映像运行相同的应用程序,它没有问题。 chromedriver=2.29.461571.

我已经设置了远程调试,并想在我推送到 Jenkins/linux 之前在我的 macOS 上进行调试,但被这个 chrome 阻止无法启动:在 macOS 上的容器中异常退出。

为什么在我的 macos 上会发生这种情况,但在 Jenkins/Linux 中却没有,如何解决?

【问题讨论】:

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


    【解决方案1】:

    此错误消息...

    org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
      (Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.19.76-linuxkit x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 60.13 seconds
    Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
    System info: host: 'a45e0250acbf', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.76-linuxkit', java.version: '1.8.0_121'
    Driver info: driver.version: ChromeDriver
    

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

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

    • 您正在使用 chromedriver=2.29
    • chromedriver=2.29 的发行说明明确提及以下内容:

    支持 Chrome v56-58​​strong>

    • 大概你使用的是最新的chrome=85.0
    • ChromeDriver v85.0 的发行说明明确提及以下内容:

    支持Chrome 85版

    所以 ChromeDriver v2.40Chrome 浏览器 v85.0

    之间存在明显的不匹配

    解决方案

    确保:

    • JDK 升级到当前级别JDK 8u252
    • Selenium 升级到当前发布的Version 3.141.59
    • ChromeDriver 已更新到当前的ChromeDriver v85.0 级别。
    • Chrome 已更新至当前 Chrome 版本 85.0 级别。 (根据ChromeDriver v85.0 release notes
    • 如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端
    • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
    • 进行系统重启
    • 非root用户身份执行@Test
    • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。

    【讨论】:

    • 感谢您的关注。我的chrome版本是58,chromedriver=2.29支持。请注意,这组适用于 Jenkins,但不适用于我的 Mac 容器。Neverless
    • 构建最新的 selenium/node-chrome-debug,chrome 版本现在是 85,但是我得到了 org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start:existed exception. (未知错误:DevToolsActivePort 文件不存在)(从 chrome 位置 /usr/bin/google-chrome 启动的进程不再运行,因此 ChromeDriver 假设 Chrome 已崩溃。)构建信息:版本:'未知',修订:'未知',时间:'未知'系统信息:主机:'b7da3083cde9',ip:'172.17.0.2',os.name:'Linux',os.arch:'amd64',os.version:'4.19 .76-linuxkit', java.version: '1.8.0_265'
    • 很多人都有这个问题,我已经尝试了所有的建议,但仍然得到同样的错误。这是我的选择: options.addArguments("--headless"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--disable-setuid-sandbox"); options.addArguments("--remote-debugging-port=5005");
    • @gxu 要解决unknown error: DevToolsActivePort file doesn't exist 错误,请参阅thisthisthis 讨论。
    • 我在上面检查过,还添加了 options.setBinary("/usr/bin/google-chrome"); /usr/bin/google-chrome 存在,仍然得到同样的错误
    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 2018-02-13
    • 2022-12-30
    • 1970-01-01
    • 2021-05-03
    • 2019-12-06
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多