加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 在heroku上使用chrome驱动程序运行selenium:`找不到Chr

发布时间:2020-12-17 03:33:04 所属栏目:百科 来源:网络整理
导读:我是一个菜鸟,因为它涉及 Linux设置(和heroku),所以如果这个问题是基本的道歉. 我想在Heroku上运行selenium webkit(在ruby中).我遇到一个困难,我的脚本无法找到Chrome二进制文件. 我实际上让chrome自己工作: ~ $chromedriverStarting ChromeDriver 2.22.397
我是一个菜鸟,因为它涉及 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进程,但没有.

我也试过明确地设置路径,例如我的ruby代码中的Selenium :: WebDriver :: Chrome.driver_path =’chromedriver’,前面提到的文件位于根类别中.

它在本地完美运行(有或没有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的buildpack.例如:

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读