Selenium Chromedriver服务器尽管可用,但仍会超时

时间:2017-12-14 20:09:57

标签: java selenium selenium-chromedriver

我有一个Java Selenium项目,它不能在我的机器上运行,但确实在同事上运行'具有相同操作系统版本(OSX 10.13.1),Chrome浏览器版本(63.0.3239.84)和chromedriver版本(2.34)的计算机。我收到了消息:

Starting ChromeDriver 2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e) on port 18633
Only local connections are allowed.

org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T18:33:54.468Z'
System info: host: 'localhost', ip: 'fe80:0:0:0:1cc9:e0ab:f4e5:dd34%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.1', java.version: '1.8.0_20'
Driver info: driver.version: ChromeDriver
...
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:18633/status] to be available after 20005 ms
    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
    at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:187)
    ... 28 more
Caused by: java.util.concurrent.TimeoutException
    at java.util.concurrent.FutureTask.get(FutureTask.java:205)
    at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:149)
    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
    ... 29 more

然而,当我在浏览器中打开http://localhost:18633/status时,我得到了有效的回复:

{"sessionId":"","status":0,"value":{"build":{"version":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X","version":"10.13.1"}}}

我尝试过更换chromedriver二进制文件,但我还不确定还能做什么。我与geckodriver有类似的问题,但这可能是也可能不是同一个问题。 我还尝试在我的系统上创建一个新用户并从该帐户运行它,以考虑用户设置 - 没有运气。

我在这里缺少什么?有什么信息可以帮助调试这个问题?

1 个答案:

答案 0 :(得分:2)

错误说明了一切:

org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.

清楚地表明 WebDriver 实例未启动。因此 Driver info 空白保留为:

Driver info: driver.version: ChromeDriver

哪个内容产生 org.openqa.selenium.net.UrlChecker$TimeoutException java.util.concurrent.TimeoutException

在没有任何代码块可见性的情况下猜测实际原因是很困难的,但通常我们可以通过从此link下载 chromedriver 二进制文件来解决此问题。在初始化chromedriver实例时传递 WebDriver 的绝对路径,如下所示:

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
driver = new ChromeDriver();

要点:

  • 始终使用最新 Selenium Client ChromeDriver 版本。
  • 始终为浏览器 Automatic Updates 启用
  • 始终更新 JDK 版本(当前版本 JDK 8u152