【问题标题】:org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start with Selenium and Javaorg.openqa.selenium.WebDriverException:等待驱动程序服务器以 Selenium 和 Java 启动时超时
【发布时间】:2023-03-24 04:29:01
【问题描述】:

我已经尝试了 Stackoverflow 主题中的所有内容。我通过 jenkins 在远程从站上运行了 java selenium 测试。荒谬的是first测试始终运行并且浏览器打开,所有其他测试都给我“等待驱动程序服务器启动超时”。

public WebDriver startChrome() {
            
    System.setProperty("java.net.preferIPv4Stack", "true");
    System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
    ChromeOptions chromeOptions = new ChromeOptions();
    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("credentials_enable_service", false);
    prefs.put("profile.password_manager_enabled", false);
    chromeOptions.addArguments("--no-sandbox"); 
    chromeOptions.addArguments("--disable-dev-shm-usage"); 
    chromeOptions.addArguments("--aggressive-cache-discard"); 
    chromeOptions.addArguments("--disable-cache"); 
    chromeOptions.addArguments("--disable-application-cache"); 
    chromeOptions.addArguments("--disable-offline-load-stale-cache"); 
    chromeOptions.addArguments("--disk-cache-size=0");
    chromeOptions.addArguments("--dns-prefetch-disable"); 
    chromeOptions.addArguments("--no-proxy-server"); 
    chromeOptions.addArguments("--log-level=3"); 
    chromeOptions.addArguments("--silent"); 
    chromeOptions.addArguments("--disable-browser-side-navigation"); 
    chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL); 
    chromeOptions.addArguments("-disable-cache");
    chromeOptions.addArguments("-disable-extensions");
    chromeOptions.addArguments("--incognito");
    chromeOptions.addArguments("start-maximized");
    //chromeOptions.setExperimentalOption("useAutomationExtension", false);
    ChromeDriverService chromeDriverService = ChromeDriverService.createDefaultService();
    port = chromeDriverService.getUrl().getPort();
    return new ChromeDriver(chromeDriverService, chromeOptions);
}

错误:

Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '4.0.0-alpha-7', revision: 'de8579b6d5'
System info: host: 'ISTDTSTYNMD04V', ip: '10.52.253.54', os.name: 'Windows Server 2016', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_271'
Driver info: driver.version: unknown
    at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:231)
    at org.openqa.selenium.remote.service.DriverService.lambda$start$0(DriverService.java:193)
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
    at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:35592/status] to be available after 20000 ms
    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:90)
    at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:227)
    ... 7 more
Caused by: java.util.concurrent.TimeoutException
    at java.util.concurrent.FutureTask.get(FutureTask.java:205)
    at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:88)
    ... 8 more

到目前为止我尝试过的所有解决方案:

  • 更新 Java 1_8_271
  • 更新 Selenium 4
  • 更新 ChromeDriver 87
  • 使用 rawcap 检查 localhost 流量
  • 检查 etc/hosts 中的 localhost dns 定义
  • 更新 Chrome 87
  • 设置代理
  • 检查端口可用性
  • 检查驱动程序路径
  • 在创建之前终止所有 chrome 和驱动程序任务(唯一有效的解决方案,但不适用于并行测试)
  • 检查 localhost url 和端口是否可以通过 chrome 访问 -> http 200

当我尝试在代码驱动程序创建函数 catch 块中通过 java urlconnection 访问 url 和端口时,它给了我连接重置但在 chrome 中它给了 200。

我们将不胜感激。

最好的问候

【问题讨论】:

    标签: java selenium google-chrome selenium-webdriver selenium-chromedriver


    【解决方案1】:

    此错误消息...

    Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start. 
    Build info: version: '4.0.0-alpha-7', revision: 'de8579b6d5' 
    System info: host: 'ISTDTSTYNMD04V', ip: '10.52.253.54', os.name: 'Windows Server 2016', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_271' 
    Driver info: driver.version: unknown
    

    ...暗示 ChromeDriver 无法启动/生成新的浏览上下文,即 Chrome 浏览器 会话。

    有关您的用例的更多信息将有助于我们以更好的方式分析错误。但是,首先您只能使用一个参数start-maximized 并删除所有其他可以帮助您入门的参数。所以你的有效代码块将是:

    public WebDriver startChrome() {
    
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("start-maximized");
        ChromeDriverService chromeDriverService = ChromeDriverService.createDefaultService();
        return new ChromeDriver(chromeDriverService, chromeOptions);
    }
    

    其他注意事项

    确保:

    • JDK 升级到当前级别JDK 8u271
    • Selenium 升级到当前发布的Version 3.141.59
    • ChromeDriver 已更新到当前的ChromeDriver v87.0 级别。
    • Chrome 已更新到当前的 Chrome 版本 87.0 级别。 (根据ChromeDriver v87.0 release notes)。
    • 如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端
    • 进行系统重启
    • 非root用户身份执行@Test
    • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。

    参考文献

    您可以在以下位置找到一些相关的详细讨论:

    【讨论】:

    • 您好,非常感谢您的帮助。我以前试过,在你帮助你描述的一切后又试了一次,但没有运气。防火墙已关闭。 driver.quit 总是在@AfterTest 中运行。 jdk 更新了。 chrome 和驱动程序已更新。几次重新启动。以 root 和非 root 用户身份执行。但我无法尝试检查 Web 客户端版本。能详细点吗?
    • 嗨,刚刚在数据中心 2019 虚拟机中测试了相同的代码,它工作正常。我之前尝试过的另一台机器是 datacenter 2016。你认为这些有关系吗?
    • @Eymasar 在 Datacenter 2019 虚拟机Datacenter 2016 两个不同的系统之间,可以有许多不同的方面需要考察。理想情况下,您必须始终将测试平台与日常开发调整分开
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多