【问题标题】:Selenium Chromedriver server times out despite being availableSelenium Chromedriver 服务器超时,尽管可用
【发布时间】:2020-02-13 21:59:04
【问题描述】:

我有一个 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 上遇到了类似的问题,但这可能是也可能不是同一个问题。 我还尝试在我的系统上创建一个新用户并从该帐户运行它,以考虑用户设置 - 不走运。

我在这里缺少什么?哪些信息有助于调试此问题?

【问题讨论】:

  • Chrome浏览器版本相同?
  • 是的,Chrome 版本相同。他们得到一个“IllegalMonitorStateException”,但它会启动 chrome 浏览器。我的实例甚至没有这样做
  • 你给chromedriver执行权限了吗?
  • 是的,它具有执行权限,如果我直接运行它,我会得到输出“在端口 9515 上启动 ChromeDriver 2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e) 仅允许本地连接。”
  • 我认为问题在于您将 localhost 解析为 IPv6 地址。

标签: java selenium selenium-chromedriver


【解决方案1】:

错误说明了一切:

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

明确表示WebDriver 实例未启动。因此 Driver info 留为 blank 为:

Driver info: driver.version: ChromeDriver

哪个反过来产生错误:

org.openqa.selenium.net.UrlChecker$TimeoutException

java.util.concurrent.TimeoutException

如果没有任何代码块的可见性,很难猜测实际原因,但通常我们可以通过从 repository 下载 ChromeDriver 二进制文件并传递 ChromeDriver 同时初始化 WebDriver 实例如下:

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

要点:

  • 始终使用 Selenium ClientChromeDriver 二进制文件的最新版本。
  • 始终保持浏览器的自动更新启用
  • 始终保持 JDK 版本更新(当前版本为 JDK 8u241

【讨论】:

  • 我很抱歉,我显然专注于我得到的错误并且没有看到/省略初始化日志。我现在已经将它包含在输出中 - 它显然正在启动驱动程序(我什至可以连接到端点)但由于某种原因 selenium 无法与 chromedriver 服务器通信
  • 前 2 行 - 在端口 18633 上启动 ChromeDriver 2.34.522932 (4140ab217e1ca1bec0c4b4d1b148f3361eb3a03e) 只允许本地连接。
  • 但您仍然面临WebDriverException: Timed out waiting for driver server to start. 对解决方案没有任何影响。您尝试过我的解决方案一次吗?
  • 我确实尝试设置系统属性,并得到相同的结果。但是,更新我的 JDK 版本似乎已经修复了它,所以我将其标记为答案。感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多