Selenium::WebDriver::Error Chrome 在 M1 芯片上崩溃
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 运行s 测试,但是每当我到达调用上述方法的应用程序部分时,测试就会失败并出现以下错误:
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,运行ning Big Sur 11.2.2
- ruby 版本 2.7.2
- Chrome驱动程序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-锌
我已经尝试了几个事情:
- 向
args
添加 --headless
、--no-sandbox
选项:args => ['--headless', '--no-sandbox' ...
- 通过 brew 安装 chrome 驱动程序和 chrome 而不是下载二进制文件
- 正在重新安装 chrome 和 chrome 驱动程序
- 显式指定 chrome 和 chrome 驱动程序(
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。
我花了几天时间尝试解决我遇到的这个问题,代码如下:
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 运行s 测试,但是每当我到达调用上述方法的应用程序部分时,测试就会失败并出现以下错误:
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,运行ning Big Sur 11.2.2
- ruby 版本 2.7.2
- Chrome驱动程序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-锌
我已经尝试了几个事情:
- 向
args
添加--headless
、--no-sandbox
选项:args => ['--headless', '--no-sandbox' ...
- 通过 brew 安装 chrome 驱动程序和 chrome 而不是下载二进制文件
- 正在重新安装 chrome 和 chrome 驱动程序
- 显式指定 chrome 和 chrome 驱动程序(
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。