簡體   English   中英

org.openqa.selenium.WebDriverException:超時等待驅動程序服務器啟動 Selenium 和 Java

[英]org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start with Selenium and Java

我已經嘗試了 Stackoverflow 主題中的所有內容。 我通過 jenkins 在遠程從站上運行 java selenium 測試。 荒謬的事情是第一次測試總是運行並且瀏覽器打開,所有其他測試都給我“等待驅動程序服務器啟動超時”。

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 和驅動程序任務(唯一有效的解決方案,但不適用於並行測試)
  • 檢查本地主機 url 和端口可通過 chrome -> http 200 訪問

當我嘗試到達 url 並通過代碼驅動程序中的 java urlconnection 進行端口創建 function 時,它給了我連接重置但在 chrome 中它給出了 200

所有幫助將不勝感激。

此致

此錯誤消息...

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 瀏覽器session。

有關您的用例的更多信息將有助於我們以更好的方式分析錯誤。 但是,首先,您只能使用一個 arguments start-maximized並刪除所有其他 arguments 這將使您開始。 因此,您的有效代碼塊將是:

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升級到當前發布的版本 3.141.59
  • ChromeDriver已更新到當前的 ChromeDriver v87.0級別。
  • Chrome已更新到當前的Chrome 版本 87.0級別。 (根據ChromeDriver v87.0 發行說明)。
  • 如果您的基礎Web 客戶端版本太舊,請卸載它並安裝最新的 GA 和發布版本的Web 客戶端
  • 重新啟動系統
  • 非 root用戶身份執行您的@Test
  • 始終在tearDown(){}方法中調用driver.quit()以優雅地關閉和銷毀WebDriverWeb 客戶端實例。

參考

您可以在以下位置找到一些相關的詳細討論:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM