在 Firefox 47.x 发布之前,旧版驱动程序被实现为 Firefox 扩展。每当 WebDriver 启动 Firefox 时,此扩展程序都会安装在驱动程序使用的配置文件中。
因此我们使用了:
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
Firefox 48 禁用了浏览器扩展并引入了 WebDriver。从那时起GeckoDriver
,Mozilla 开发和维护的基于 Marionette 的解决方案用于自动化 Mozilla Firefox 浏览器。
木偶
根据Mozilla在developer.mozilla.org上的官方文档。Marionette是自动化驱动程序。它使用可以控制 UI 的 Firefox 的远程协议。Marionette 接受请求并在 Gecko 中执行它们。它也有一个客户。客户端向服务器发送指令,服务器在浏览器中执行指令。
因此我们开始使用 Marionette:
System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
电线
有一些参考资料将可执行文件重命名为“wires.exe”并将其添加到您的路径中。因此使用了以下内容:
System.setProperty("webdriver.firefox.marionette","C:\\wires.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
壁虎司机
GeckoDriver 是我们需要在我们的系统中下载的可执行文件,并在执行我们的测试用例时在我们的脚本/程序中提及它的位置。GeckoDriver 将依次启动 Mozilla Firefox 浏览器。
这些摘录摘自Jim Evan对Selenium 测试人员使用 Marionette FirefoxDriver 而不是旧的 Selenium FirefoxDriver 有什么好处?这让我们详细了解了GeckoDriver和Marionette是如何付诸实践的。
因此我们开始使用 geckodriver.exe:
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
现在在当前情况下,您仍然可以选择通过旧版 Firefox 47.x 浏览器和最近的 Firefox 53.x 浏览器版本执行自动化。
用例 1:
如果使用旧版 Firefox 47.x 浏览器,您必须通过 DesiredCapabilities 类将“marionette”显式设置为 false,如下所示:
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("firefox_binary", "C:\\Program Files\\Mozilla Firefox47\\firefox.exe");
dc.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(dc);
driver.navigate().to("https://gmail.com");
用例 2:
如果使用旧版 Firefox 47.x 浏览器,如果您跳过将“marionette”设置为 false 或将“marionette”设置为 true,您将观察到IllegalStateException
用例 3:
如果使用 Firefox 53.x 浏览器,您可以选择跳过将“marionette”设置为 true,如下所示,这将显示 Marionette INFO 日志,例如Marionette INFO Listening on port 11105
:
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://gmail.com");
用例 4:
如果使用 Firefox 53.x 浏览器,您可以通过 DesiredCapabilities 类将“marionette”显式设置为 true,该类也会显示 Marionette WARN 日志,例如WARN TLS certificate errors will be ignored for this session
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(dc);
driver.navigate().to("https://gmail.com");
用例 5:
如果使用 Firefox 53.x 浏览器,如果您通过 DesiredCapabilities 类将“marionette”强制设置为 false,您将观察到UnreachableBrowserException
.