gpt4 book ai didi

selenium - webdriver.firefox.marionette 和 webdriver.gecko.driver 之间的区别

转载 作者:行者123 更新时间:2023-12-01 21:57:21 26 4
gpt4 key购买 nike

我现在正在学习 Selenium,遇到了一个问题。

我知道 Selenium 默认支持旧版 Firefox,无需驱动程序。对于最新版本的 Firefox,我们必须下载驱动程序并使用 System.setProperty 定义它。

根据这个link ,对于 Firefox 45 和 46,启动驱动程序代码可能如下所示:

WebDriver driver = new FirefoxDriver();

我的Firefox版本是45.5.1.,但是上面的代码仍然无法工作。所以根据这个link ,我添加了:

System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");

而且它成功了。

然后我意识到我的计算机上还没有安装geckodriver.exe。为了看看效果如何,我已更改为以下代码:

System.setProperty("webdriver.firefox.marionette","");

它仍然有效。

所以,我的第一个问题来了:发生了什么?我确信我的环境中不存在 geckodriver.exe 。如果没有指出位置,那么为什么我必须设置属性?

另外,我见过这样的代码:

System.setProperty("webdriver.gecko.driver", "/tools/marionette/wires.exe");

我的第二个问题是,webdriver.gecko.driverwebdriver.firefox.marionettewires.exe 之间有什么区别? geckodriver.exe

最佳答案

直到版本 45(推送到版本 47),用于自动化 Firefox 的驱动程序是每个客户端附带的扩展。但这个扩展被放弃了,可能是由于政策的变化,现在要求所有扩展都必须由 Mozilla 签名。

Marionette 是 Firefox 附带/包含的新驱动程序。该驱动程序有自己的协议(protocol),与 Selenium/WebDriver 协议(protocol)不直接兼容。

Gecko 驱动程序(以前称为wires)是一个实现Selenium/WebDriver 协议(protocol)的应用程序服务器。它翻译 Selenium 命令并将其转发给 Marionette 驱动程序

对于 Java 客户端,默认行为是使用 Gecko 驱动程序,但可以通过 webdriver.firefox.marionette 属性覆盖它以将旧版扩展用作驱动程序:

System.setProperty("webdriver.firefox.marionette", "false");

或者通过FirefoxOptions使用marionette功能:

FirefoxOptions options = new FirefoxOptions()
.setLegacy(true);

WebDriver driver = new FirefoxDriver(options);
// or with a remote server
WebDriver driver = new RemoteWebDriver(remoteUrl, options.toDesiredCapabilities());

或直接使用DesiredCapability:

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

关于selenium - webdriver.firefox.marionette 和 webdriver.gecko.driver 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43272919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com