Problem
ChromeDriver and Headless Chrome are a great solution for running automated JavaScript tests.
Today I wanted to run some tests on a Linux Server (Centos 7) and although Chrome and ChromeDriver were installed correctly, my Java app would just hang after ChromeDriver is started:
Starting ChromeDriver 2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4) on port 31042 Only local connections are allowed.
After a while, it would show the following error:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 2.6.32-042stab112.15 x86_64) (WARNING: The server did not provide any stacktrace information)
Solution
It turns out that the problem was that Chrome does not like to run on Linux operating systems when it is started by the root user.
The quick solution is to add the following argument when launching Chrome:
ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--no-sandbox");
However, this unfortunately has security implications and thus it would be best to find a way to run the Java app which launches ChromeDriver without the root user account.