本文介紹了WebDriverException:等待驅(qū)動(dòng)程序服務(wù)器啟動(dòng)時(shí)超時(shí),通過Java使用Selify ChromeDriver和Chromium出錯(cuò)的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在嘗試通過Selify-Java庫實(shí)現(xiàn)頁面登錄。我使用的驅(qū)動(dòng)程序是Chromium(Chrome的開源版本)。這個(gè)實(shí)現(xiàn)在Windows環(huán)境下運(yùn)行得很好,但是當(dāng)我通過Jenkins(Linux Box)運(yùn)行這個(gè)實(shí)現(xiàn)時(shí),驅(qū)動(dòng)程序無法啟動(dòng)。我希望在實(shí)例化ChromeDriver時(shí)不會(huì)看到任何問題,并且它應(yīng)該會(huì)開始時(shí)沒有任何問題。
以下是Linux環(huán)境的詳細(xì)信息。
瀏覽器和驅(qū)動(dòng)程序:Chromium 73.0.3683.86 Fedora Project
Linux盒驅(qū)動(dòng)路徑:/usr/bin/Chrome-Browser.sh
Java版本:1.8.0_131
硒版本使用:3.14.0,并嘗試使用最新的3.141.59
操作系統(tǒng):Linux
我已確保并驗(yàn)證該文件具有Jenkins用戶執(zhí)行的完全權(quán)限。
我正在嘗試的代碼
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);
錯(cuò)誤日志。
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
推薦答案
File chromiumDriver = new File("/usr/bin/chromium-browser");
System.setProperty("webdriver.chrome.driver", chromiumDriver.getAbsolutePath());
您正在將webdriver.chrome.driver
系統(tǒng)屬性設(shè)置為chromium-browser
的位置。相反,您必須將該屬性設(shè)置為指向chromdriver
可執(zhí)行文件所在的位置(您應(yīng)該已將其下載到某個(gè)位置)。
這篇關(guān)于WebDriverException:等待驅(qū)動(dòng)程序服務(wù)器啟動(dòng)時(shí)超時(shí),通過Java使用Selify ChromeDriver和Chromium出錯(cuò)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,