线程 "main" org.openqa.selenium.WebDriverException 中的异常:在 geckodriver 升级后等待 Firefox 启动 45 秒时超时
Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start after geckodriver upgradation
我已经在 java 中编写了以下代码来打开 firefox 并重定向到 gmail.com link,但它似乎在重定向之前超时了。我已经检查了 Whosebug 中的解决方案,发现其他人也面临同样的问题。 He/she 升级了回溯的 geckodriver,之后它成功重定向到 him/her 的 link。看到之后,我检查了 geckodriver、firefox 和 selenium 的版本,似乎一切都已更新。 geckodriver的版本是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 这是默认配置。由于您已将 marionette
强制设置为 false 因此您看到的错误为:
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();
或者您可以显式地将 marionette 设置为 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();
这个错误我有 2 天了,我的解决方案是 Set.Plataform 放 Platafor.ANY 或 Plataform.Windows 因为 Plataform.WIN10 不工作,marionette 是'没必要,我补充说,neether 有效,只适用于此。我希望这对其他人有帮助:
public class Main {
public static RemoteWebDriver driver;
public static void main(String[] args) throws MalformedURLException {
System.setProperty("webdriver.gecko.driver", "D:/Lib/geckodriver.exe");
DesiredCapabilities desiredCapabilities = new DesiredCapabilities().firefox();
desiredCapabilities.setPlatform(Platform.ANY);
desiredCapabilities.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL("http://172.20.19.182:5557/wd/hub"), desiredCapabilities);
driver.navigate().to("http://www.google.com");
driver.findElementByName("q").sendKeys("execute automation");
driver.findElementByName("q").sendKeys(Keys.ENTER);
driver.close();
// write your code here
}
}
我已经在 java 中编写了以下代码来打开 firefox 并重定向到 gmail.com link,但它似乎在重定向之前超时了。我已经检查了 Whosebug 中的解决方案,发现其他人也面临同样的问题。 He/she 升级了回溯的 geckodriver,之后它成功重定向到 him/her 的 link。看到之后,我检查了 geckodriver、firefox 和 selenium 的版本,似乎一切都已更新。 geckodriver的版本是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 这是默认配置。由于您已将 marionette
强制设置为 false 因此您看到的错误为:
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();
或者您可以显式地将 marionette 设置为 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();
这个错误我有 2 天了,我的解决方案是 Set.Plataform 放 Platafor.ANY 或 Plataform.Windows 因为 Plataform.WIN10 不工作,marionette 是'没必要,我补充说,neether 有效,只适用于此。我希望这对其他人有帮助:
public class Main {
public static RemoteWebDriver driver;
public static void main(String[] args) throws MalformedURLException {
System.setProperty("webdriver.gecko.driver", "D:/Lib/geckodriver.exe");
DesiredCapabilities desiredCapabilities = new DesiredCapabilities().firefox();
desiredCapabilities.setPlatform(Platform.ANY);
desiredCapabilities.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL("http://172.20.19.182:5557/wd/hub"), desiredCapabilities);
driver.navigate().to("http://www.google.com");
driver.findElementByName("q").sendKeys("execute automation");
driver.findElementByName("q").sendKeys(Keys.ENTER);
driver.close();
// write your code here
}
}