execute o selênio com o driver chrome no heroku: `não é possível encontrar o binário do Chrome`
Eu sou um noob no que diz respeito à instalação do linux (e heroku), então peço desculpas se esta pergunta é básica.
Quero executar o selenium webkit (em ruby) no Heroku. Estou com uma dificuldade de que meu script não consiga encontrar o arquivo binário do Chrome.
Na verdade, eu tenho o chrome para trabalhar sozinho:
~ $ chromedriver
Starting ChromeDriver 2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad) on port 9515
Only local connections are allowed.
chromedriver
sendo um arquivo que eu copiei/app/vendor/bundle/bin/chromedriver
, apenas para facilitar por enquanto.chromedriver
arquivo existe porque eu instaleigema chromedriver-helper. A gema deveria disponibilizar o arquivo binário para processos ruby, mas não o fez.
Também tentei definir o caminho explicitamente, por exemplo.Selenium::WebDriver::Chrome.driver_path = 'chromedriver'
no meu código ruby, com o arquivo mencionado acima, localizado na categoria raiz.
Tudo funciona perfeitamente localmente (com ou sem odriver_path
)
O que pode ser a causa? Eu lieste segmento SO de anos atrás, mas parece desatualizado para mim. Todas as idéias seriam muito apreciadas!
rastreio de erro:
~ $ 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>'
ATUALIZAR:
Tentei o mesmo com o servidor AWS EC2 (instância iniciada, clonado git repo, instalado todas as dependências). O mesmo acontece lá também. Ou seja, é capaz de executar o chromedriver a partir do terminal, mas com o mesmo erro ao executar o script.