【问题标题】:WebDriverException: Timed out waiting for driver server to start error with Selenium ChromeDriver and Chromium through JavaWebDriverException: Timed out waiting for driver server to start error with Selenium ChromeDriver and Chromium through Java
【发布时间】:2019-06-21 07:04:28
【问题描述】:

我试图通过 selenium-java 库实现页面登录。我使用的驱动程序是 Chromium(chrome 的开源版本)。此实现在 Windows 环境中运行良好,但是当我通过 Jenkins(Linux box) 运行此实现时,驱动程序无法启动。我希望在实例化 ChromeDriver 时不会出现任何问题,它应该可以毫无问题地启动。

这里是Linux环境的详细信息。

  • 浏览器和驱动程序: Chromium 73.0.3683.86 Fedora 项目
  • linux box中的驱动路径:/usr/bin/chromium-browser.sh
  • Java 版本:1.8.0_131
  • 使用的 Selenium 版本:3.14.0 并尝试使用最新的 3.141.59
  • 操作系统:Linux

我确保并​​验证了该文件具有从 Jenkins 用户执行的完全权限。

我正在尝试的代码

        String OS = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH);
        ChromeOptions options = new ChromeOptions();
        if (OS.indexOf("win") >= 0) {
            filePath = new File(properties.getChromeDriverPath()).getAbsolutePath();
            System.setProperty("webdriver.chrome.driver", filePath);
        } else if (OS.indexOf("nux") >= 0) {
            File chromiumDriver = new File("/usr/bin/chromium-browser");
            System.setProperty("webdriver.chrome.driver", chromiumDriver.getAbsolutePath());
        }
        options.setHeadless(true);
        WebDriver chromeDriver = new ChromeDriver(options);

错误日志。

com.src.test.services.integration.test.AuthServicesTest > testAuthentication STANDARD_ERROR
    org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
    Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
    System info: host: 'xyzJenkinsHost.test.corp', ip: '172.20.3.2', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-862.14.4.el7.x86_64', java.version: '1.8.0_131'
    Driver info: driver.version: ChromeDriver
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:193)
        at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:179)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)

com.src.test.services.integration.test.AuthServicesTest > testAuthentication STANDARD_ERROR
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)

Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:19154/status] to be available after 20002 ms
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
        at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:188)
        ... 21 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:156)
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
        ... 22 more

【问题讨论】:

  • 你是否在 chromiumDriver.getAbsolutePath() 上得到正确的路径
  • @AshokkumarGanesan 是的,尝试了控制台输出及其准确。文件存在且可执行

标签: java linux selenium selenium-chromedriver chromium


【解决方案1】:

此错误消息...

org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'xyzJenkinsHost.test.corp', ip: '172.20.3.2', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-862.14.4.el7.x86_64', java.version: '1.8.0_131'
Driver info: driver.version: ChromeDriver

...暗示 ChromeDriver 无法启动/产生新的 WebBrowsing 会话,即 Chrome 浏览器 会话。

您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:

  • 您的 JDK 版本1.8.0_131,相当古老

所以 JDK v8u6131Selenium Client v3.141.59 之间存在明显的不匹配。


解决方案

【讨论】:

  • 非常感谢您的回答。由于某些原因,我无法升级现有的 Linux 环境。我可以通过将 Selenium 版本降级到一些旧版本来使我的脚本正常工作吗?
  • @RajeshKumar 逆向工程将是一个更艰难的决定。至少升级 JDK
  • 该问题与 Java 兼容性无关
【解决方案2】:
File chromiumDriver = new File("/usr/bin/chromium-browser");
System.setProperty("webdriver.chrome.driver", chromiumDriver.getAbsolutePath());

您正在将webdriver.chrome.driver 系统属性设置为chromium-browser 的位置。相反,您必须将该属性设置为指向 chromdriver 可执行文件所在的位置(您应该在某处下载)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    相关资源
    最近更新 更多