我的Capybara Selenium网络驱动程序设置在尝试连接到ChromeDriver时失败-看起来他们发布了一个没有M1版本的版本,可以在ChromeDriver APIhttps://chromedriver.storage.googleapis.com/index.html?path=106.0.5249.61/
中找到
错误:
Webdrivers::NetworkError:
Net::HTTPServerException: 404 "Not Found" with https://chromedriver.storage.googleapis.com/106.0.5249.61/chromedriver_mac64_m1.zip
代码:
Capybara.register_driver :headless_chrome do |app|
options.add_argument("--disable-gpu")
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--window-size=1920,1080")
driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
### Allow file downloads in Google Chrome when headless
### https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c89
bridge = driver.browser.send(:bridge)
path = "/session/:session_id/chromium/send_command"
path[":session_id"] = bridge.session_id
bridge.http.call(:post, path, cmd: "Page.setDownloadBehavior",
params: {
behavior: "allow",
downloadPath: "/tmp/downloads",
})
###
driver
end
当应用程序调用driver.browser
时,我会得到上面的错误,这是因为它要查找的文件不存在。
我可以设置特定版本的chrome驱动程序吗?或者在初始化驱动程序时要查找什么系统?
我买了一台苹果硅mac,但仍然有旧的(英特尔(镀铬驱动器。为了解决这个问题,我不得不:
- 安装苹果硅镀铬器
- 将webdrivers gem更新为>=5.2.0
您可能只需要执行第二步,这取决于您是否已经安装了苹果硅镀铬器。请参阅下面的检查方法。
检查您是否有苹果硅(臂(镀铬器
运行这两个命令,如果输出如下所示,那么您已经安装了苹果硅chromedriver,可以跳过更新webdrivers gem:
which chromedriver
# /opt/homebrew/bin/chromedriver
file $(which chromedriver)
# /opt/homebrew/bin/chromedriver: Mach-O 64-bit executable arm64
但如果输出是这样的,你仍然有英特尔版本的chromedriver,需要更新到苹果硅版本:
which chromedriver
# /usr/local/bin/chromedriver
file $(which chromedriver)
# /usr/local/bin/pandoc: Mach-O 64-bit executable x86_64
安装苹果硅镀铬器:
brew install --cask chromedriver
在新的终端窗口中,再次运行which chromedriver
和file $(which chromedriver)
以检查它现在显示的是苹果硅(arm(版本。
如果你从苹果公司得到错误:
"chromedriver"无法打开,因为苹果无法检查其是否有恶意软件。
只需运行此并重试:
xattr -d com.apple.quarantine $(which chromedriver)
将webdrivers gem更新为>=5.2.0
webdrivers gem必须>=5.2.0所以它知道在哪里可以找到苹果硅镀铬器。
在我的Gemfile中是这样的:
gem "webdrivers"
所以我把它改成:
gem "webdrivers", "~> 5.2.0"
捆绑安装,一切正常。
Fix发布在此处:https://github.com/titusfortner/webdrivers/pull/239-这是";网络驱动程序";