gpt4 book ai didi

java - ChromeDriver 在 Java 中使用 Selenium 时出现问题 - 等待驱动程序服务器启动超时

转载 作者:行者123 更新时间:2023-11-30 05:31:54 25 4
gpt4 key购买 nike

我现在已经在 Selenium 和 ChromeDriver 上苦苦挣扎了一段时间,但我似乎无法让它工作。我的测试一直运行良好,直到上周我开始收到 ChromeDriver 无法启动的错误。当我运行脚本时,只有三分之一的时间会出现错误,而且最常见的是当我依次运行多个脚本时。

我使用的版本:

  • Java 12.0.1
  • Selenium :3.141.59
  • 谷歌浏览器:76.0.3809.87
  • ChromeDriver:76.0.3809.68
  • Windows 10

这是我得到的错误:

org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'host', ip: '172.20.10.2', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '12.0.1'
Driver info: driver.version: ChromeDriver
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:202)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
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)
at com.salesforce.BaseTest.setUp(BaseTest.java:40)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:523)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:10488/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:197)
... 37 more
Caused by: java.util.concurrent.TimeoutException
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156)
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
... 38 more

以下代码片段是发生错误的我的基类的一部分。创建 ChromeDriver 的新实例时总是会发生该错误。每次创建新测试时都会调用基测试类:

@BeforeMethod
protected void setUp() throws MalformedURLException {
System.setProperty("webdriver.chrome.driver",
"-my path to chromedriver-\\chromedriver.exe");

ChromeOptions capability = new ChromeOptions();
capability.addArguments("--no-sandbox");

driver = new ChromeDriver(capability);
wd = new WebDriverWait(driver, WD_TIMEOUT);
}

@AfterMethod(alwaysRun = true)
protected void tearDown() {
driver.quit();
}


我已经尝试过:

  • 重新安装 Google Chrome(根据说明 here)并确保使用为正确的 Google Chrome 版本推荐的 ChromeDriver。
  • 使用 Selenium、Google Chrome 和 ChromeDriver 的更新版本
  • 从命令提示符启动我的测试使用的相同 Chrome 二进制文件。上 http://localhost:9515/status我可以看到消息“ChromeDriver 已准备好进行新 session ”。这样启动 chromedriver.exe 就可以正常工作了。
  • 尝试使用 --no-sandbox 选项
  • 通过调用带有“always run true”标志的 AfterMethod,确保 ChromeDriver 在每次 session 后退出。

正如开头提到的,我的脚本对于某些脚本运行良好,但有时 Chrome 无法启动。创建错误的并不总是相同的测试脚本,它有所不同。有人知道如何解决这个问题吗?

最佳答案

当我更改了我使用的软件的某些版本后,问题现已解决。以下步骤解决了问题:

  • 使用 JDK 1.8.0_221 代替 Java 12
  • 使用 Google Chrome 版本 76.0.3809.87
  • ChromeDriver 版本 76.0.3809.68 的使用
  • 更改为所有这些版本后,我重新启动了系统,我的测试终于再次运行。

关于java - ChromeDriver 在 Java 中使用 Selenium 时出现问题 - 等待驱动程序服务器启动超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com