ChromeWebDriver - unknown error: Chrome failed to start: crashed
Eventually I found out that WebDriver was trying to run Chrome from C:\Users\______\AppData\Local\Google\Chrome\Application\chrome.exe
, which was not working even when trying it manually. It was very strange because when I launch Chrome I use one installed in Program Files
directory and it works without problems.
So I had uninstalled Chrome, deleted everything from c:\Users______\AppData\Local\Google\Chrome\
and installed Chrome again. After that it started working.
Selenium: WebDriverException:Chrome failed to start: crashed as google-chrome is no longer running so ChromeDriver is assuming that Chrome has crashed
Try to download HERE and use this latest chrome driver version:
- https://sites.google.com/chromium.org/driver/
Try this:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
d = webdriver.Chrome('/home/<user>/chromedriver',chrome_options=chrome_options)
d.get('https://www.google.nl/')
org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed using ChromeDriver Selenium in Jenkins on Ubuntu 18.04
This error message...
...implies that the ChromeDriver was unable to initiate/spawn a new Browsing Context i.e. Chrome Browser session.
Deep dive
Looking into the snapshot of the error stacktrace you have provided, though you mentioned about using ChromeDriver 81.0.4044.69 and Google Chrome 81.0.4044.129, still it appears there is a mismatch between the versions of the different binaries you are using, possibly Chrome browser is not installed at the default location within your system or due to JDK mismatch. Additionally, ChromeDriver 81.0.4044.69 (2020-03-17) was a bit unstable which was replaced by ChromeDriver 81.0.4044.138 (2020-05-05)
However, the server i.e. ChromeDriver expects you to have Chrome installed in the default location for each system as per the image below:
1For Linux systems, the ChromeDriver expects /usr/bin/google-chrome
to be a symlink to the actual Chrome binary.
You can find a detailed discussion in What is default location of ChromeDriver and for installing Chrome on Windows
Solution
In case you are using the Chrome executable in a non-standard location you have to override the Chrome binary location as follows:
Code based solution:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
ChromeOptions options = new ChromeOptions();
options.setBinary('/usr/bin/google-chrome'); //chrome binary location
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
//execute the remaining steps
driver.quit();Additional considerations- Ensure the following:
- JDK is upgraded to current levels JDK 8u251.
- Selenium is upgraded to current levels Version 3.141.59.
- ChromeDriver is updated to current ChromeDriver v81.0.4044.138 level.
- Chrome is updated to current Chrome Version 81.0.4044.138 level. (as per ChromeDriver v80.0 release notes)
- Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
- Execute your
@Test
as non-root user. - Always invoke
driver.quit()
withintearDown(){}
method to close & destroy the WebDriver and Web Client instances gracefully.
References
You can find a couple of relevant discussions in:
- WebDriverException: unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser
- How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?
- Running Chromedriver on Ubuntu Server headlessly
Related Topics
Check Json Data Is None in Python
Importing Local Module (Python Script) in Airflow Dag
Check If a Key Exists in a Bucket in S3 Using Boto3
How to Open a Password Protected Excel File Using Python
Save Variables in Every Iteration of for Loop and Load Them Later
Spark Data Frames - Check If Column Is of Type Integer
Calculating the Mean of Each Month by Year in Python
Plot Different Dataframes in the Same Figure
Get Discord User Id from Username
Python Db-Api: Fetchone VS Fetchmany VS Fetchall
No Output Displays When Execute Python File
Filtering the Dataframe Based on the Column Value of Another Dataframe
How to Convert Datetime to Integer in Python
Python Format Size Application (Converting B to Kb, Mb, Gb, Tb)
Pandas: How to Assign Values Based on Multiple Conditions for Existing Columns