使用Selenium 3.0启动Firefox 46.0.1时获取IllegalStateException

时间:2016-11-07 12:02:10

标签: java selenium firefox selenium-webdriver

我有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

下载
执行以下代码时

$this->db->insert('table_name',$data);
$id = $this->db->mysql_insert_id();

为什么我会收到此错误但是我使用的是Firefox版本< 48.0? 是否必须将Geckodriver与Selenium 3.0.1一起使用?

如果我做出以下更改,上面的代码工作正常:

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

2 个答案:

答案 0 :(得分:2)

必须为所有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);

答案 1 :(得分:0)

您提到的更改日志链接是针对dotnet的。这是Java的Changelog

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