I also have a Java example that doesn't work/has the same error as Python.
Sample Java class (JavaTest.java):
Code: Select all
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class JavaTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
WebDriver driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://www.google.com/");
try {
driver.findElement(By.cssSelector("input[name='q']"));
} finally {
driver.quit();
}
}
}
Steps to recreate:
- Install a fresh Buster (I'm using a Raspberry Pi 4, not sure if the hardware matters)
- Install ChromeDriver
Code: Select all
sudo apt install chromium-chromedriver
- Download and unzip the Selenium client
Code: Select all
wget https://selenium-release.storage.googleapis.com/3.141/selenium-java-3.141.59.zip -P selenium-java-3.141.59
unzip selenium-java-3.141.59/selenium-java-3.141.59.zip -d selenium-java-3.141.59
- Compile and run the Java code above
Code: Select all
javac -cp ".:/home/pi/selenium-java-3.141.59/client-combined-3.141.59.jar:/home/pi/selenium-java-3.141.59/libs/*" JavaTest.java
java -cp ".:/home/pi/selenium-java-3.141.59/client-combined-3.141.59.jar:/home/pi/selenium-java-3.141.59/libs/*" JavaTest
Running the above code results in the below error message:
Code: Select all
[email protected]:~ $ java -cp ".:/home/pi/selenium-java-3.141.59/client-combined-3.141.59.jar:/home/pi/selenium-java-3.141.59/libs/*" JavaTest
Starting ChromeDriver 74.0.3729.157 (7b16107ab85c5364cdcd0b2dea2539a1f2dc327a-refs/branch-heads/[email protected]{#998}) on port 1221
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
--disable-quic --enable-tcp-fast-open --ppapi-flash-path=/usr/lib/chromium-browser/libpepflashplayer.so --ppapi-flash-args=enable_stagevideo_auto=0 --ppapi-flash-version=
Dec 01, 2019 10:43:37 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
[1575261818.333][SEVERE]: Unable to receive message from renderer
Exception in thread "main" org.openqa.selenium.WebDriverException: chrome not reachable
(Session info: headless chrome=74.0.3729.157)
(Driver info: chromedriver=74.0.3729.157 (7b16107ab85c5364cdcd0b2dea2539a1f2dc327a-refs/branch-heads/[email protected]{#998}),platform=Linux 4.19.75-v7l+ armv7l) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'raspberrypi', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'arm', os.version: '4.19.75-v7l+', java.version: '11.0.5'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 74.0.3729.157 (7b16107ab85c..., userDataDir: /tmp/.org.chromium.Chromium...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:34365}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 74.0.3729.157, webStorageEnabled: true}
Session ID: c83b71b528d91ebe8b10b9d9c1dcce92
*** Element info: {Using=css selector, value=input[name='q']}
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:420)
at org.openqa.selenium.By$ByCssSelector.findElement(By.java:431)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
at JavaTest.main(JavaTest.java:18)
This also has the "WebDriverException: chrome not reachable" error, so the problem doesn't appear to be language specific. Running the same code in Raspbian Stretch does not have this issue.