gpt4 book ai didi

c# - Selenium 3.7 和 Firefox ESR 52.4.1 是否需要 geckodriver?

转载 作者:行者123 更新时间:2023-11-30 17:32:00 25 4
gpt4 key购买 nike

据我了解,当使用来自 NuGet 的 Selenium.WebDriver v3.7 时,我需要当前版本的 geckodriver 才能与 Firefox ESR v52.4.1 交互。但是,我已经设法让测试运行并成功通过 geckodriver 的参与。

我相信这是因为我在实例化 RemoteWebDriver 时启用了 legacy implementation 选项,如下所示。

FirefoxOptions options = new FirefoxOptions
{
UseLegacyImplementation = true, // means that geckodriver is not required
BrowserExecutableLocation = ..., // ensures authorised Firefox version used
Profile = ... // an instance of FirefoxProfile
};

RemoteWebDriver remoteWebDriver = new FirefoxDriver(options);

帮助我理解细节的一些问题:

  1. 这是否意味着 Selenium.WebDriver 使用 Marionette 协议(protocol)直接与 Firefox 浏览器对话?
  2. 如果是这样,此设置是否依赖于当前与 NuGet 包一起分发的库,这些库可能(将?)在即将发布的版本中删除?
  3. 如果是这样,您知道可能是哪个版本或什么时候发布吗?

谢谢!

最佳答案

Does this mean that Selenium.WebDriver is talking directly to the Firefox browser using the Marionette protocol?

据我了解,当您将 System.setProperty("webdriver.firefox.marionette", "false"); 设置为 false 或执行 FirefoxOptions options = new FirefoxOptions()
.setLegacy(true);
这意味着它正在使用 firefox 属性中描述的旧扩展(不是 marionette 和 gecko)here

不使用 gecko 就不能使用 Marionette(或者更确切地说,如果你想与基于 gecko 的浏览器交互,你必须使用 marionette )。 Marionette 中有一个 gecko 组件,它是提到的 marionette 服务器 here

geckodriver因为它写在 github 上,提供了一个 API 来与 Gecko browsers 通信

This program provides the HTTP API described by the WebDriver protocol to communicate with Gecko browsers

对于 selenium 3.0 及更高版本,木偶默认启用,如前所述 here

更多信息请引用this还有问题

如果您有兴趣了解有关 marionette 客户端-服务器-壁虎交互的更多信息,请查看 here

编辑:

source code在 readme.md 的不同位置,geckodriver 声明了以下关于 geckodriver 的要点

  1. geckodriver is a Proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers.

  2. Selenium client bindings will pick up the geckodriver binary executable from your [system’s PATH environmental variable][PATH]

3.Since geckodriver is a separate HTTP server that is a complete remote end implementation of [WebDriver], it is possible to avoid using the Selenium remote server

  1. geckodriver translates WebDriver [commands], [responses], and [errors] to the [Marionette protocol], and acts as a proxy between [WebDriver] and [Marionette]

  2. By default geckodriver tries to find and use the system installation of Firefox

所以,为了回答您的问题,这就是它的工作原理

Selenium language bindings reaches to -->geckodriver.exe finds -->系统 firefox 安装(虽然可以更改)reaches to inbuilt code> --> marionette client reaches to --> marionette server reaches to --> 浏览器的gecko engine 反过来调用 - -> Gecko 引擎中的 element.js,interaction.js,action.js,evaluate.js 取决于绑定(bind)或客户端请求的内容。

关于c# - Selenium 3.7 和 Firefox ESR 52.4.1 是否需要 geckodriver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47185262/

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