我有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();
}
答案 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。