微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium::WebDriver::Error Chrome 在 M1 芯片上崩溃

如何解决Selenium::WebDriver::Error Chrome 在 M1 芯片上崩溃

我花了几天时间试图解决我遇到的这个问题,代码如下:

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
      "chromeOptions" => {
        :args => ['--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/74.0.3729.169 Safari/537.36 LegalMonsterNoBlock"']
      }
    )
    driver = Selenium::WebDriver.for :remote,url: selenium_host,:desired_capabilities => caps
    driver.get(url)

我正在尝试运行调用方法的测试。测试运行良好。它打开 Chrome 运行测试,但每当我到达调用上述方法的应用程序部分时,测试都会失败并显示以下错误

Minitest::UnexpectedError: Selenium::WebDriver::Error::UnkNownError: unkNown error: Chrome Failed to start: crashed
          (chrome not reachable)
          (The process started from chrome location /usr/bin/google-chrome is no longer running,so ChromeDriver is assuming that Chrome has crashed.)
        Build info: version: '3.141.59',revision: 'e82be7d358',time: '2018-11-14T08:25:53'
        System info: host: '7a6aaccda364',ip: '172.17.0.2',os.name: 'Linux',os.arch: 'amd64',os.version: '4.19.121-linuxkit',java.version: '1.8.0_232'
        Driver info: driver.version: unkNown
        remote stacktrace: #0 0x0040004b6479 <unkNown>

我的设置:

  • 配备 Apple M1 的 Macbook,运行 Big Sur 11.2.2
  • 红宝石版本 2.7.2
  • ChromeDriver 89.0.4389.23(用于 m1 芯片)
  • Chrome 版本 89.0.4389.72(官方版本)(arm64)
  • gem selenium-webdriver 版本 3.142.3
  • 运行 docker selenium/standalone-chrome-debug:3.141.59-zinc

我已经尝试了几项

  • --headless 添加 --no-sandBoxargs 选项:args => ['--headless','--no-sandBox' ...
  • 通过 brew 安装 chromedriver 和 chrome 而不是下载二进制文件
  • 重新安装 chrome 和 chromedriver
  • 明确指定 chrome 和 chromedriver(Selenium::WebDriver::Chrome.path = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'Selenium::WebDriver::Chrome.driver_path="/path/to/chrome_driver_binary/chromedriver")的路径

还有其他人遇到过此类问题吗?

解决方法

原来是我的docker镜像,不支持arm64架构,所以是这一步: Running a docker selenium/standalone-chrome-debug:3.141.59-zinc

如果我禁用了使用 docker 容器的部分测试,则没有问题。我想这对每个人来说都是不可能的,但我们希望很快就会有一个支持 arm64 架构的 selenium 镜像。

请参阅此处的 Selenium issue

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?