How to fix "usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed" error in Linux?

Esaki Raja picture Esaki Raja · Apr 26, 2019 · Viewed 12.5k times · Source

I'm trying to setup a jenkins server to host my automation framework with Selenium-webdriver(3.142.0) and ruby(2.3.7) on Amazon Linux. If I try to invoke a chromedriver using my script, it says,

"Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: exited abnormally (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=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.14.104-95.84.amzn2.x86_64 x86_64)".

I've placed my chromedriver under '/var/lib/jenkins/driver/chromedriver' and set the PATH for the same in .bashrc and also created a symlink for the same to '/usr/bin/google-chrome'. Below are the details of the machine that I'm using:

    NAME="Amazon Linux"
    VERSION="2"
    ID="amzn"
    ID_LIKE="centos rhel fedora"
    VERSION_ID="2"
    PRETTY_NAME="Amazon Linux 2"
    ANSI_COLOR="0;33"
    CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
    HOME_URL="https://amazonlinux.com/"```

require 'selenium-webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument("--disable-dev-shm-usage");
options.add_argument('--no-sandbox')
driver = Selenium::WebDriver.for :chrome, options: options



>Expected result: Browser should be invoked.
>Actual result: 
Exits with the error "The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed."

Answer

Sanjay Bhimani picture Sanjay Bhimani · Apr 26, 2019

Chrome is not installed on default location. ChromeDriver check for Chrome is installed in the default location /usr/bin/google-chrome for linux system. If you are using a Chrome in a non-standard location then you need to override Chrome binary location.

caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"binary" => "Actual Path"})