使用Selenium 3.0启动Firefox 46.0.1时获取IllegalStateException
我有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版本<48.0? 是否必须将Geckodriver与Selenium 3.0.1一起使用?
如果我进行以下更改,上面的代码工作正常:
System.setProperty("webdriver.gecko.driver","path to geckodriver"); WebDriver driver = new FirefoxDriver();
您必须为所有Firefox浏览器设置以下属性,而不管selenium 3.0
以上的版本如何:
System.setProperty("webdriver.gecko.driver","path to geckodriver");
Geckodriver现在是自动化Firefox的默认机制。 这是Mozilla为该浏览器实现的驱动程序,并且是自动化Firefox 48及更高版本所必需的
设置路径是强制性的。
如果要在Firefox 47或之前运行测试,请将Firefox驱动程序function“marionette”设置为false。
DesiredCapabilities d = new DesiredCapabilities(); d.setCapability("marionette", false); // to disable marionette. WebDriver driver = new FirefoxDriver(d);
您提到的更改日志链接是针对dotnet的。 这是Java的Changelog
- Firefox 47.0.1或更早版本仅完全支持Firefox。 geckodriver提供了对更高版本的firefox的支持,它基于不断发展的W3C WebDriver规范,并使用该规范中的有线协议,该协议可能随时更改,恕不另行通知。
- 您可能希望选择ESR版本,例如45.4.0esr或更早版本。
- 根本不支持Firefox 47.0.0。
- 如何使用Geckodriver禁用Selenium中的Firefox日志记录?
- Selenium 2.48.2 + firefox 42 +浏览器未实例化
- 如何调试Firefox警报框自动关闭并且无法检测Serenity BDD中的警报?
- 使用selenium Java(Mac OSX)将Firefox浏览器置于前端
- 使用BrowserMobProxy,Selenium,Firefox,marionette / gecko获取请求和响应
- 45000 ms后无法在端口7055上连接到主机127.0.0.1。 用FF版26.0和selenium独立jar2.39
- Selenium在一台计算机上发生了“UnreachableBrowserException / Address has in use”
- 如何使用Selenium(Java)在浏览器中禁用JavaScript?
- 来自Selenium 2 / WebDriver的Id的jQuery元素选择器