Heroku:使用 Selenium 时无法找到 chromedriver
Heroku: Unable to find chromedriver when using Selenium
我有一个 Ruby 代码可以执行此操作:
browser = Watir::Browser.new(:chrome, switches: switches, headless: true)
browser.goto(....)
当我 运行 Heroku 上的代码时,我得到
Selenium::WebDriver::Error::WebDriverError: Unable to find chromedriver. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github
.com/SeleniumHQ/selenium/wiki/ChromeDriver.
我看过像 这样的帖子
但我不知道如何正确配置构建包。
我试过:
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-google-chrome
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-chromedriver
但是当我尝试将更改推送到 Heroku 时,我得到:
Error Plugin: chromedriver: files attribute must be specified in /Users/leticia/.local/share/heroku/node_modules/chromedriver/package.json
谁能一步步告诉我如何设置必要的构建包以使 Watir gem 在 Heroku 中工作?
谢谢
更新:
我需要 'webdrivers' 现在我得到 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515
.
我尝试将环境变量配置为:
ENV['GOOGLE_CHROME_BIN'] = "/app/.apt/opt/google/chrome/chrome"
ENV['GOOGLE_CHROME_SHIM'] = "/app/.apt/usr/bin/google-chrome-stable"
并这样做:
options = Selenium::WebDriver::Chrome::Options.new
chrome_bin_path = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
options.binary = chrome_bin_path if chrome_bin_path
options.add_argument('--headless')
driver = Selenium::WebDriver.for :chrome, options: options
但我仍然在最后一行收到错误。
更新二:
我从 Heroku 转移到了 Dokku 而我得到了同样的错误。 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515
.
我不能保证这足以满足您的所有需求,但是如果您将 webdrivers
添加到您的 gemfile 并需要它,它会自动为您下载 chromedriver。
方法是:
添加构建包
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver
在 Heroku 中添加环境变量 GOOGLE_CHROME_BIN
和 GOOGLE_CHROME_SHIM
,两者的值为 /app/.apt/opt/google/chrome/chrome
即
heroku config:set GOOGLE_CHROME_BIN=/app/.apt/opt/google/chrome/chrome
heroku config:set GOOGLE_CHROME_SHIM=/app/.apt/opt/google/chrome/chrome
watir的使用方法如下
args = %w[--disable-infobars --headless window-size=1600,1200 --no-sandbox --disable-gpu]
options = {
binary: ENV['GOOGLE_CHROME_BIN'],
prefs: { password_manager_enable: false, credentials_enable_service: false },
args: args
}
@browser = Watir::Browser.new(:chrome, options: options)
我有一个 Ruby 代码可以执行此操作:
browser = Watir::Browser.new(:chrome, switches: switches, headless: true)
browser.goto(....)
当我 运行 Heroku 上的代码时,我得到
Selenium::WebDriver::Error::WebDriverError: Unable to find chromedriver. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github
.com/SeleniumHQ/selenium/wiki/ChromeDriver.
我看过像
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-google-chrome
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-chromedriver
但是当我尝试将更改推送到 Heroku 时,我得到:
Error Plugin: chromedriver: files attribute must be specified in /Users/leticia/.local/share/heroku/node_modules/chromedriver/package.json
谁能一步步告诉我如何设置必要的构建包以使 Watir gem 在 Heroku 中工作?
谢谢
更新:
我需要 'webdrivers' 现在我得到 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515
.
我尝试将环境变量配置为:
ENV['GOOGLE_CHROME_BIN'] = "/app/.apt/opt/google/chrome/chrome"
ENV['GOOGLE_CHROME_SHIM'] = "/app/.apt/usr/bin/google-chrome-stable"
并这样做:
options = Selenium::WebDriver::Chrome::Options.new
chrome_bin_path = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
options.binary = chrome_bin_path if chrome_bin_path
options.add_argument('--headless')
driver = Selenium::WebDriver.for :chrome, options: options
但我仍然在最后一行收到错误。
更新二:
我从 Heroku 转移到了 Dokku 而我得到了同样的错误。 Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515
.
我不能保证这足以满足您的所有需求,但是如果您将 webdrivers
添加到您的 gemfile 并需要它,它会自动为您下载 chromedriver。
方法是:
添加构建包
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver
在 Heroku 中添加环境变量
GOOGLE_CHROME_BIN
和GOOGLE_CHROME_SHIM
,两者的值为/app/.apt/opt/google/chrome/chrome
即heroku config:set GOOGLE_CHROME_BIN=/app/.apt/opt/google/chrome/chrome heroku config:set GOOGLE_CHROME_SHIM=/app/.apt/opt/google/chrome/chrome
watir的使用方法如下
args = %w[--disable-infobars --headless window-size=1600,1200 --no-sandbox --disable-gpu] options = { binary: ENV['GOOGLE_CHROME_BIN'], prefs: { password_manager_enable: false, credentials_enable_service: false }, args: args } @browser = Watir::Browser.new(:chrome, options: options)