Heroku: невозможно найти хромедрайвер при использовании Selenium - PullRequest
0 голосов
/ 05 июня 2018

У меня есть код Ruby, который делает это:

browser = Watir::Browser.new(:chrome, switches: switches, headless: true)
browser.goto(....)

Когда я запускаю код на Heroku, я получаю

Selenium::WebDriver::Error::WebDriverError:  Unable to find chromedriver. Please download the server from http://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH. More info at https://github
.com/SeleniumHQ/selenium/wiki/ChromeDriver.

Я видел сообщения типа Heroku:невозможно подключиться к chromedriver 127.0.0.1:9515 при использовании Watir / Selenium , но я не знаю, как правильно настроить buildpack-пакеты.Я пытался с:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-google-chrome
heroku buildpacks:set https://github.com/heroku/heroku-buildpack-chromedriver

, но затем, когда я пытаюсь отправить изменения в Heroku, я получаю:

Error Plugin: chromedriver: files attribute must be specified in /Users/leticia/.local/share/heroku/node_modules/chromedriver/package.json

Может кто-нибудь шаг за шагом дать мне, как установитьнеобходимые пакеты сборки, чтобы заставить драгоценный камень Watir работать в Heroku?

Спасибо

Обновление:

Мне потребовались веб-драйверы, и теперь яЯ получаю Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515.

Я пытался настроить env vars для:

ENV['GOOGLE_CHROME_BIN'] = "/app/.apt/opt/google/chrome/chrome"
ENV['GOOGLE_CHROME_SHIM'] = "/app/.apt/usr/bin/google-chrome-stable"

и делаю это:

options = Selenium::WebDriver::Chrome::Options.new
chrome_bin_path = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
options.binary = chrome_bin_path if chrome_bin_path 
options.add_argument('--headless')
driver = Selenium::WebDriver.for :chrome, options: options

но я все ещеполучить ошибку в последней строке.

Обновление 2:

Я переехал в Dokku вместо Heroku и получаю ту же ошибку.Selenium::WebDriver::Error::WebDriverError: unable to connect to chromedriver 127.0.0.1:9515.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Способ сделать это:

  1. Добавить пакеты сборки с

    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome
    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver
    
  2. Добавить переменные env GOOGLE_CHROME_BIN и GOOGLE_CHROME_SHIM в Heroku, оба со значением /app/.apt/opt/google/chrome/chrome, т. Е.

    heroku config:set GOOGLE_CHROME_BIN=/app/.apt/opt/google/chrome/chrome
    heroku config:set GOOGLE_CHROME_SHIM=/app/.apt/opt/google/chrome/chrome
    
  3. Используйте watir следующим образом

    args = %w[--disable-infobars --headless window-size=1600,1200 --no-sandbox --disable-gpu]
    options = {
           binary: ENV['GOOGLE_CHROME_BIN'],
           prefs: { password_manager_enable: false, credentials_enable_service: false },
           args:  args
         }    
    @browser = Watir::Browser.new(:chrome, options: options)
    
0 голосов
/ 05 июня 2018

Я не могу гарантировать, что этого достаточно для всего, что вам нужно, но если вы добавите webdrivers в свой гемфайл и потребуете его, он автоматически загрузит chromedriver для вас.

...