我在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 v3.12.0 , GeckoDriver是v0.20.1 和 Firefox v60.0.2时, 您必须强制使用默认配置的 木偶 。由于已将其强制设置 marionette 为 false, 因此您会看到以下错误:
marionette
org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start.
有两种方法可以解决您的问题,如下所示:
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();
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();