Heroku / Rails上的Chromedriver:无法加载应用程序:Selenium :: WebDriver :: Error :: WebDriverError:不是文件:“ / usr / local / bin / chromedriver”

时间:2019-03-13 12:18:57

标签: ruby-on-rails selenium selenium-webdriver heroku selenium-chromedriver

尝试在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的位置设置另一个变量?如果是,怎么办?以及如何分配它?

谢谢

1 个答案:

答案 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变量。