尝试在Heroku,RoR应用程序上运行Selenium时出现上述错误。
我添加了构建包heroku-buildpack-google-chrome和heroku-buildpack-chromedriver
然后添加了配置变量
GOOGLE_CHROME_SHIM=/app/.apt/opt/google/chrome/chrome
GOOGLE_CHROME_BIN=/app/.apt/opt/google/chrome/chrome
并在水豚设置中添加以下代码:
chrome_bin = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
chrome_opts = chrome_bin ? { "chromeOptions" => { "binary" => chrome_bin } } : {}
Capybara.register_driver :chrome do |app| Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_opts), ) end
Capybara.javascript_driver = :chrome
如chrome链接中所述:https://github.com/heroku/heroku-buildpack-google-chrome
是否需要为Webdriver的位置设置另一个变量?如果是,怎么办?以及如何分配它?
谢谢
答案 0 :(得分:0)
可以通过以下操作使它在heroku Rails应用程序上运行:
1)添加了buildpacks heroku-buildpack-google-chrome和heroku-buildpack-chromedriver
2)将驱动程序设置在轨道上
options = Selenium::WebDriver::Chrome::Options.new
if Rails.env.production?
Selenium::WebDriver::Chrome.path = ENV["GOOGLE_CHROME_SHIM"]
end
options.add_argument("--headless")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
@driver = Selenium::WebDriver.for :chrome, options: options
由于webdriver构建软件包会自动设置GOOGLE_CHROME_SHIM,因此无需在heroku上设置任何ENV变量。