我试图用红宝石在Heroku上运行无头镀铬。我已经安装了构建包https://github.com/heroku/heroku-buildpack-google-chrome/和https://github.com/heroku/heroku-buildpack-chromedriver,并将Selenium driver_path设置为正确的位置(我已经在设置Selenium驱动程序路径之前检查了这一点{{1}将它设置为buildpack设置的cannot find Chrome binary
变量后,我得到GOOGLE_CHROME_BIN
)。
当我尝试使用unable to connect to chromedriver
或Watir::Browser.new :chrome
启动Selenium / Watir时,我得到Watir::Browser.new :chrome, headless:true
感谢任何建议
答案 0 :(得分:3)
由于配置错误的组合以及将正确的选项哈希传递给Watir::Browser.new
,我们也遇到了同样的问题。我们正在使用watir (6.10.3)
,selenium-webdriver (~> 3.4, >= 3.4.1)
和ruby '2.4.0'
。
为了让所有工作都在Heroku上,我们添加了以下构建包:
要成功初始化浏览器,您需要在选项哈希中将路径传递给chromedriver bin。 heroku-buildpack-chromedriver为bin搜索路径提供了一个环境变量GOOGLE_CHROME_SHIM
。最后,本地和Heroku上运行的代码如下所示:
opts = {
headless: true
}
if (chrome_bin = ENV.fetch('GOOGLE_CHROME_SHIM', nil))
opts.merge!( options: {binary: chrome_bin})
end
browser = Watir::Browser.new :chrome, opts
browser.goto "your url"
答案 1 :(得分:1)
如果其他人偶然发现了这一点,那么这里有一个很好的例子:https://github.com/jormon/minimal-chrome-on-heroku