当前位置: 首页 > 面试题库 >

线程“主”org.openqa.selenium.WebDriverException中的异常:在geckodriver升级后,等待Firefox等待45秒超时

宦烈
2023-03-14
问题内容

我在Java中编写了以下代码,仅打开firefox并重定向到gmail.com链接,但似乎在重定向之前它已超时。我检查了stackoverflow中的解决方案,发现其他人也遇到了相同的问题。他/她已经升级了已回溯的geckodriver,此后成功将其重定向到他/她的链接。看到我检查了geckodriver,firefox和selenium的版本后,似乎一切都更新了。壁虎驱动程序的版本为v0.20.1,firefox版本为60.0.2,selenium为3.12.0。我写的代码是:

    System.setProperty("webdriver.gecko.driver", "C:\\Users\\MI SERVICE\\Downloads\\geckodriver.exe");
    FirefoxOptions capa = new FirefoxOptions();
    capa.setCapability("marionette", false);
    WebDriver driver = new FirefoxDriver(capa);
    driver.navigate().to("https://www.gmail.com");
    driver.quit();

导致异常

    Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start.
    Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
    System info: host: 'DESKTOP-3P379LK', ip: '192.168.0.105', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '10.0.1'
    Driver info: driver.version: FirefoxDriver
        at org.openqa.selenium.firefox.XpiDriverService.waitUntilAvailable(XpiDriverService.java:132)
        at org.openqa.selenium.firefox.XpiDriverService.start(XpiDriverService.java:117)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
        at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
        at firefoxScripts.MyFirstTestCase.main(MyFirstTestCase.java:17)
    Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:36845/hub/status] to be available after 45002 ms
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
        at org.openqa.selenium.firefox.XpiDriverService.waitUntilAvailable(XpiDriverService.java:130)
        ... 7 more
    Caused by: java.util.concurrent.TimeoutException
        at java.base/java.util.concurrent.FutureTask.get(Unknown Source)
        at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:148)
        at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
        ... 8 more

问题答案:

当您使用 Selenium v​​3.12.0GeckoDriver是v0.20.1Firefox v60.0.2时,
您必须强制使用默认配置的 木偶 。由于已将其强制设置 marionettefalse, 因此您会看到以下错误:

org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start.

解:

有两种方法可以解决您的问题,如下所示:

  • 使用以下默认配置( marionette 设置为 true ):
        System.setProperty("webdriver.gecko.driver", "C:\Users\MI SERVICE\Downloads\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();
    driver.navigate().to("https://www.gmail.com");
    driver.quit();
  • 或者,您可以将 木偶 明确设置为 true ,如下所示:
        System.setProperty("webdriver.gecko.driver", "C:\Users\MI SERVICE\Downloads\geckodriver.exe");
    FirefoxOptions capa = new FirefoxOptions();
    capa.setCapability("marionette", true);
    WebDriver driver = new FirefoxDriver(capa);
    driver.navigate().to("https://www.gmail.com");
    driver.quit();


 类似资料:
  • 问题内容: 我在Java中编写了以下代码,仅打开firefox并重定向到gmail.com链接,但似乎在重定向之前它已超时。我检查了stackoverflow中的解决方案,发现其他人也遇到了相同的问题。他/她已经升级了已回溯的geckodriver,此后成功将其重定向到他/她的链接。看到我检查了geckodriver,firefox和selenium的版本后,似乎一切都更新了。geckodrive

  • 问题内容: 我正在使用Ubuntu 16.04 问题答案: 我遇到了这个问题,终于找到了答案。我一直在使用Marionette驱动程序,该驱动程序不再适用于FF版本53和Selenium 3.5或更高版本。该GeckoDriver文档显示系统属性应该如何引用。 我从以下位置更改了代码: 至: 现在我的本地Firefox运行正常。 希望这对其他人有帮助。

  • 我一直在尝试使用android studio emulator,但我无法在emulator上运行我的应用程序。当我运行我的应用程序时,它会显示带有以下详细信息的模拟器: > Hax已启用 Hax ram\U尺寸0x40000000 HAX正在工作,emulator以快速virt模式运行。 端口5554上的控制台;5555港口ADB 之后,将进入下一个选项卡启动应用程序,并显示等待设备联机。之后显示

  • 问题内容: 我使用Node.js和TypeScript,并且使用。这是我的测试用例: 我想为整个功能设置一个超时时间。即如果要花费2秒,花费0.5秒,花费5秒,我想在3秒钟后让我抛出错误的超时。 正常调用是一个问题,因为范围丢失了: 而且我不能用普通的方式抓住它: 有关如何解决的任何想法? 问题答案: 您可以使用超时: 您必须将其包装在诺言中才能使用。

  • 给出一些关于我正在尝试做的细节:我正在用Java制作一个Minecraft插件。我有一个对象,它使用HashMap绑定到Minecraft的Player对象。 我在这个对象中有一个方法,类似于: 显然,会有很多事情发生,所以我希望这是异步发生的。计时器将在后台继续,它不会阻止代码中的任何其他内容。 对不起,如果我的问题太简单了,但我真的检查了网络和我是新的Java,所以原谅我的无知。

  • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似