Reputation: 1827
The script works locally, but not on a server.
b = Watir::Browser.new :chrome, headless: true
Error:
response.rb:69:in `assert_ok': unknown error: Chrome failed to start: exited abnormally (Selenium::WebDriver::Error::UnknownError)
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.9.75-29.el7.x86_64 x86_64)
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `new'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:84:in `create_response'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/default.rb:104:in `request'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/http/common.rb:62:in `call'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:166:in `execute'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:99:in `create_session'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/bridge.rb:53:in `handshake'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/chrome/driver.rb:49:in `initialize'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/common/driver.rb:44:in `new'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/common/driver.rb:44:in `for'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver.rb:86:in `for'
from /root/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/watir-6.16.5/lib/watir/browser.rb:46:in `initialize'
from rebooter.rb:9:in `new'
from rebooter.rb:9:in `<main>'
I found few answers mentioning --disable-dev-shm-usage
, but I don't really know how to pass it.
I tried without success:
Watir::Browser.new :chrome, headless: true, disableDevShmUsage: true
I am not really sure what shm is, but df is showing I have 0% usage of it:
# df -h | grep -Ei 'shm|use%'
Filesystem Size Used Avail Use% Mounted on
tmpfs 962M 0 962M 0% /dev/shm
How to modify the script to run also on a server? Why is it working locally, but not on a server?
Upvotes: 1
Views: 1409
Reputation: 5262
Combined with your own discovery, you can pass args like this:
args = %w[headless disable-gpu disable-dev-shm-usage disable-software-rasterizer no-sandbox]
b = Watir::Browser.new :chrome, args: args
shm
is short for shared memory.
About the sandbox.
If you are using remote chromdriver, then above simple way of passing args won't work, then:
b = Watir::Browser.new :chrome, {url: "http://127.0.0.1:9515", chromeOptions: {args: args}}
http://127.0.0.1:9515
is an example of remote chromedriver server.
Note no-sandbox
is not recommended if you have other solution.
So it's better to fix it or change to use other browser instead.
Like firefox
also has headless
mode now, combined with geckodriver is a good option too.
Upvotes: 5