Pet*_*rov 5 ruby linux selenium heroku selenium-webdriver
我是一个菜鸟,因为它涉及Linux设置(和heroku),所以如果这个问题是基本的道歉.
我想在Heroku上运行selenium webkit(在ruby中).我遇到一个困难,我的脚本无法找到Chrome二进制文件.
我实际上让chrome自己工作:
~ $ chromedriver
Starting ChromeDriver 2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad) on port 9515
Only local connections are allowed.
Run Code Online (Sandbox Code Playgroud)
chromedriver是我复制的文件/app/vendor/bundle/bin/chromedriver,只是为了让它变得更容易.chromedriver文件存在因为我安装了chromedriver-helper gem.gem应该使二进制文件可用于ruby进程,但没有.
我也尝试过显式设置路径,例如Selenium::WebDriver::Chrome.driver_path = 'chromedriver'在我的ruby代码中,上面提到的文件位于根类别中.
这一切都在当地完美运作(有或没有driver_path)
可能是什么原因?我多年前读过这个SO帖子,但它似乎已经过时了.任何想法将不胜感激!
错误跟踪:
~ $ 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>'
Run Code Online (Sandbox Code Playgroud)
更新:
我尝试使用AWS EC2服务器(启动实例,克隆git repo,安装所有依赖项).同样的事也发生在那里.也就是说,能够从终端执行chromedriver,但在运行脚本时看到相同的错误.
ChromeDriver只是Chrome的驱动程序.它需要安装在同一台机器上的实际Chrome浏览器才能实际运行.
Heroku默认情况下没有在其dynos上安装Chrome.您需要使用安装Chrome的buildpack.例如:
https://github.com/dwayhs/heroku-buildpack-chrome
您可以看到它如何获取Chrome:
https://github.com/dwayhs/heroku-buildpack-chrome/blob/master/bin/compile#L36-38
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |