【问题标题】:Getting IllegalStateException while launching Firefox 46.0.1 using Selenium 3.0使用 Selenium 3.0 启动 Firefox 46.0.1 时出现 IllegalStateException
【发布时间】:2017-03-20 18:28:51
【问题描述】:

我有 Selenium 版本 3.0.1 和 Firefox 版本 46.0.1。 在 selenium 3.0.1 changelog 中提到:

Geckodriver 现在是 Firefox 自动化的默认机制。这 是 Mozilla 对该浏览器的驱动程序的实现,并且是 自动化 Firefox 48 及更高版本所必需的

虽然我遇到了错误:

java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;有关详细信息,请参阅https://github.com/mozilla/geckodriver。最新版本可以从https://github.com/mozilla/geckodriver/releases下载

在执行以下代码时:

@Test
public void test() {
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    driver.quit();
}

为什么我使用的是 Firefox 版本

如果我进行以下更改,上述代码将完美运行:

System.setProperty("webdriver.gecko.driver","path to geckodriver");
WebDriver driver = new FirefoxDriver();

【问题讨论】:

    标签: java selenium firefox selenium-webdriver


    【解决方案1】:

    必须为所有 Firefox 浏览器设置以下属性,无论 selenium 3.0 以后的版本如何:

    System.setProperty("webdriver.gecko.driver","path to geckodriver");
    

    Geckodriver 现在是 Firefox 自动化的默认机制。这是 Mozilla 为该浏览器实现的驱动程序,是自动执行 Firefox 48 及更高版本所必需的

    必须设置路径。

    如果您想在 Firefox 47 或更早版本上运行测试,请将 Firefox 驱动程序功能“marionette”设置为 false。

    DesiredCapabilities d = new DesiredCapabilities();
    d.setCapability("marionette", false);  // to disable marionette.
    WebDriver driver = new FirefoxDriver(d);
    

    【讨论】:

      【解决方案2】:

      您提到的变更日志链接适用于 dotnet。这是用于 Java 的 Changelog

      • Firefox 仅在版本 47.0.1 或更早版本中完全受支持。 geckodriver 提供对更高版本的 firefox 的支持, 它基于不断发展的 W3C WebDriver 规范,并使用线 该规范中的协议,如有更改,恕不另行通知。
      • 您可能希望选择 ESR 版本,例如 45.4.0esr 或更早版本。
      • 根本不支持 Firefox 47.0.0。

      【讨论】:

      • 有提到firefox版本> 47.0.1需要geckodriver。
      • Firefox 仅在 47.0.1 或更早版本完全支持,我使用的是 46.0.1 ,尽管它给出了一个需要设置 geckodriver 的例外
      猜你喜欢
      • 1970-01-01
      • 2012-08-17
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多