gpt4 book ai didi

ruby - 在 heroku : `cannot find Chrome binary` 上使用 chrome 驱动程序运行 selenium

转载 作者:IT王子 更新时间:2023-10-29 01:15:40 25 4
gpt4 key购买 nike

我是 linux 设置(和 heroku)的菜鸟,如果这个问题很基础,我深表歉意。

我想在 Heroku 上运行 selenium webkit(在 ruby​​ 中)。我遇到了一个困难,我的脚本找不到 Chrome 二进制文件。

我实际上让 chrome 自己工作:

~ $ chromedriver
Starting ChromeDriver 2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad) on port 9515
Only local connections are allowed.

chromedriver 是我从 /app/vendor/bundle/bin/chromedriver 复制的文件,只是为了让现在更容易。 chromedriver 文件存在,因为我安装了 chromedriver-helper gem . gem 应该使二进制文件可用于 ruby​​ 进程,但没有。

我也试过显式设置路径,例如Selenium::WebDriver::Chrome.driver_path = 'chromedriver' 在我的 ruby​​ 代码中,上述文件位于根类别中。

这一切都在本地完美运行(有或没有 driver_path)

可能是什么原因?我读过 this SO thread从几年前开始,但对我来说似乎已经过时了。任何想法将不胜感激!

错误跟踪:

~ $ ruby bin/run.rb
/app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': unknown error: cannot find Chrome binary (Selenium::WebDriver::Error::UnknownError)
(Driver info: chromedriver=2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad),platform=Linux 3.13.0-91-generic x86_64)
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `new'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `create_response'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:90:in `request'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:649:in `raw_execute'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:123:in `create_session'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:87:in `initialize'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/chrome/bridge.rb:48:in `initialize'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `new'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `for'
from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for'
from /app/lib/mealpass_orderer.rb:12:in `initialize'
from /app/lib/mealpass_orderer.rb:8:in `new'
from /app/lib/mealpass_orderer.rb:8:in `run'
from bin/run.rb:3:in `<main>'

更新:

我对 AWS EC2 服务器进行了同样的尝试(启动实例、克隆 git repo、安装所有依赖项)。那里也发生同样的情况。也就是说,能够从终端执行 chromedriver,但在运行脚本时会看到相同的错误。

最佳答案

ChromeDriver 只是 Chrome 的驱动程序。它需要在同一台机器上安装实际的 Chrome 浏览器才能真正工作。

Heroku 默认没有在其 dynos 上安装 Chrome。您需要使用安装 Chrome 的构建包。例如:

https://github.com/dwayhs/heroku-buildpack-chrome

您可以看到它是如何获取 Chrome 的:

https://github.com/dwayhs/heroku-buildpack-chrome/blob/master/bin/compile#L36-38

关于ruby - 在 heroku : `cannot find Chrome binary` 上使用 chrome 驱动程序运行 selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38258848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com