【发布时间】:2023-04-01 22:06:01
【问题描述】:
我是 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 存储库、安装所有依赖项)。那里也发生同样的情况。也就是说,能够从终端执行 chromedriver,但在运行脚本时看到同样的错误。
【问题讨论】:
-
您是否考虑过运行Poltergeist?
-
@IlyaVassilevsky 不,我还没有尝试过 Poltergeist。我想知道这个错误是否与 chromedriver 有“头”有关
-
链接的 SO 问题对我来说听起来正是您遇到的问题
标签: ruby linux selenium heroku selenium-webdriver