3 回答
TA贡献1872条经验 获得超3个赞
在版本45(推送至版本47)之前,用于自动化Firefox的驱动程序是每个客户端附带的扩展。但是,此扩展名已被删除,可能是由于政策更改所致,该政策现在要求所有扩展名均由Mozilla签名。
Marionette是Firefox附带/随附的新驱动程序。该驱动程序具有自己的协议,该协议与Selenium / WebDriver协议不直接兼容。
的壁虎驱动器(以前称为导线)是实施硒/ webdriver的协议的应用服务器。它转换Selenium命令并将其转发给Marionette驱动程序。
对于Java客户端,默认行为是使用Gecko驱动程序,但是可以将其替换为将旧版扩展用作具有以下webdriver.firefox.marionette属性的驱动程序:
System.setProperty("webdriver.firefox.marionette", "false");
或具有以下marionette能力FirefoxOptions:
FirefoxOptions options = new FirefoxOptions()
.setLegacy(true);
WebDriver driver = new FirefoxDriver(options);
// or with a remote server
WebDriver driver = new RemoteWebDriver(remoteUrl, options.toDesiredCapabilities());
或直接与DesiredCapabilities:
DesiredCapabilities capa = DesiredCapabilities.firefox();
capa.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(capa);
// or with a remote server
WebDriver driver = new RemoteWebDriver(remoteUrl, capa);
要定义Gecko驱动程序的位置,请将驱动程序放置在PATH环境变量中存在的文件夹中,或者在属性中定义位置webdriver.gecko.driver:
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
或使用在命令行中分配的属性启动远程服务器:
java -Dwebdriver.gecko.driver="C:\\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar
TA贡献1829条经验 获得超6个赞
Marionette是最新Firefox版本附带/附带的新驱动程序。
但是,Geckodriver是使用W3C WebDriver兼容客户端与基于Gecko的浏览器进行交互的代理。Geckodriver提供了由WebDriver协议描述的HTTP API,以与Gecko浏览器进行通信,例如47以上的Firefox版本。
System.setProperty("webdriver.gecko.driver","path of/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
如果仍然遇到问题(由于FF版本不兼容),则可以使用以下功能:
DesiredCapabilities capabilities=DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(capabilities);
- 3 回答
- 0 关注
- 1173 浏览
添加回答
举报