Selenium::WebDriver::Error Chrome Crashed on M1 chip



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

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>

我的设置:

  • Macbook with Apple M1,运行Big Sur 11.2.2
  • ruby version 2.7.2
  • ChromeDriver 89.0.4389.23 (for m1 chip)
  • Chrome版本89.0.4389.72(官方版本)(arm64)
  • gemselenium-webdriverversion 3.142.3
  • 运行docker selenium/standalone-chrome-debug:3.141.59-zinc

我已经尝试了几个事情已经:

  • 增加--headless--no-sandbox选项到args: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问题。

对于我来说,使用与arm64架构兼容的docker映像解决了这个问题。在使用https://hub.docker.com/u/seleniarm

中的图像理解问题后,很容易设置它。我只是运行命令

docker run -d -p 4444:4444 seleniarm/standalone-chromium

这个设置在我需要的地方并且工作得很好。

当我尝试在docker中使用下面的命令运行时,我有同样的错误。

docker run -d -p 4444:4444 selenium/standalone-chrome

我的解决方案在上面发布的问题的github答案中提到,并且链接到答案,因此我们可以给出适当的学分是:

https://github.com/SeleniumHQ/docker-selenium/issues/1076 issuecomment - 788343926

希望这篇文章能对其他人有所启发。

最新更新