What I'm trying to do
Use selenium and its ruby bindings to open chrome and read a value from the DOM. This portion works great however I need to run it on a linux server headlessly. Seemed easy enough so I ran it using xvfb-run using this command:
export PATH=$PATH:./bin
xvfb-run --server-arg="-screen 0, 1024x768x16" ruby script.rb
The first line adds the binary chromedriver
to PATH
and the second lines runs the script through xvfb
. I got this working on an EC2 ubuntu box which is essentially a dev box. Everything is great.
Now comes time to run it on another EC2 ubuntu box using the same bash script. It spits out an error that the chromedriver
binary couldn't be found. Odd since it worked fine on the other box. I checked, the binary is there. I manually add it to the path and run the bash script again, same error. After some troubleshooting and googling I found this:
https://code.google.com/p/selenium/wiki/ChromeDriver
This advises that the chromedriver needs to be symlink'd to /usr/bin/google-chrome
. Again odd since it works fine on the other box and my local machine without this symlink. I symlinked it to this location and now this is the error I'm getting:
/usr/local/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.41.0/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok': unknown error: Chrome failed to start: exited abnormally (Selenium::WebDriver::Error::UnknownError)
I've never gotten this on my local or dev box. Any ideas? Is this an issue with chromedriver
, xvfb
or the environment its running in? Some difference in the deploy box that would be different than the dev box I'm missing?