org.openqa.selenium.WebDriverException:等待驱动程序服务器启动selenium和J



我已经尝试了Stackoverflow主题中的所有内容。我通过jenkins在远程slave上运行了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检查本地主机流量
  • 检查etc/hosts中的localhost dns定义
  • 更新Chrome 87
  • 设置代理
  • 检查端口可用性
  • 检查驱动程序路径
  • 在创建之前杀死所有chrome和驱动程序任务(只有有效的解决方案,但不适合并行测试(
  • 检查本地主机url和端口是否可以使用chrome访问->http 200

当我试图通过代码驱动程序创建函数catch块中的javaurlconnection访问url和端口时,它会重置我的连接,但在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浏览器会话。

如果能提供更多关于用例的信息,我们就能更好地分析错误。但是,从一开始,您只能使用一个单独的参数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升级到当前级别JDK8u271
  • Selenium已升级到当前发布的3.141.59版本
  • ChromeDriver更新为当前ChromeDriverv87.0版本
  • Chrome更新到当前Chrome 87.0版本。(根据ChromeDriver v87.0发布说明(
  • 如果您的基本Web客户端版本太旧,请将其卸载并安装最新的GA和发布的Web客户端版本
  • 进行系统重新启动
  • 非root用户身份执行您的@Test
  • 总是调用CCD_ 4方法中的CCD_;优雅地销毁WebDriverWeb客户端实例

参考

您可以在中找到一些相关的详细讨论

  • 尽管Selenium Chromedriver服务器可用,但服务器超时
  • 驱动程序信息:Driver.version:未知的ChromeDriver Chrome使用Selenium和Python
  • org.openqa.selenium.WebDriverException:通过selenium启动Chrome浏览器时等待驱动程序服务器启动超时

最新更新