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

2024-05-02

我的理解是,当使用Selenium.WebDriver来自 NuGet 的 v3.7 我需要当前版本的 geckodriver 才能与 Firefox ESR v52.4.1 交互。但是,我已经成功运行测试并成功通过withoutgeckodriver 完全参与其中。

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

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 协议直接与 Firefox 浏览器对话?
  2. 如果是这样,此设置是否依赖于当前随 NuGet 包一起分发的库,这些库可能(将?)在即将发布的版本中删除?
  3. 如果是这样,您知道可能会发布哪个版本或何时发布吗?

Thanks!


这是否意味着 Selenium.WebDriver 正在使用 Marionette 协议直接与 Firefox 浏览器对话?

根据我的理解,当你设置System.setProperty("webdriver.firefox.marionette", "false");假或做FirefoxOptions options = new FirefoxOptions() .setLegacy(true);这意味着它正在使用旧版扩展(不是 marionette 和 gecko),如 Firefox 属性中所述here https://github.com/SeleniumHQ/selenium/wiki/FirefoxDriver

如果不使用 gecko 就无法使用 Marionette (或者更确切地说,如果您想与基于 gecko 的浏览器交互,则必须使用 marionette )。 Marionette 中有一个 gecko 组件,它是前面提到的 marionette 服务器here https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette

壁虎司机 https://github.com/mozilla/geckodriver正如它写在 github 上一样,提供了一个 API 来与之通信壁虎浏览器 https://en.wikipedia.org/wiki/List_of_web_browsers#Gecko-based

该程序提供WebDriver协议描述的HTTP API 与 Gecko 浏览器通信

对于 selenium 3.0 及以上版本,默认情况下启用 marionette,如上所述here https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

欲了解更多信息,请参阅this https://stackoverflow.com/questions/43272919/difference-between-webdriver-firefox-marionette-webdriver-gecko-driver/43920453还问

如果您有兴趣了解有关 marionette 客户端-服务器-gecko 交互的更多信息,请查看here http://vakila.github.io/blog/marionette-act-i-automation/

EDIT:

the 源代码 https://dxr.mozilla.org/mozilla-central/source/testing/geckodrivergeckodriver 在 readme.md 的不同位置指出了有关 geckodriver 的以下几点

  1. geckodriver 是一个代理,用于使用 W3C WebDriver 兼容的客户端与 基于 Gecko 的浏览器。

  2. Selenium 客户端绑定将获取壁虎司机二进制可执行文件 从你的[系统的PATH环境变量][PATH]

3.由于geckodriver是一个独立的HTTP服务器,它是一个完整的 远端 [WebDriver] 的实现,可以避免使用 硒远程服务器

  1. geckodriver 翻译 WebDriver [命令]、[响应]、 和 [Marionette 协议] 的 [错误],并充当之间的代理 [WebDriver] 和 [Marionette]

  2. 默认情况下 geckodriver 会尝试查找 并使用系统安装的Firefox

所以,为了回答你的问题,这就是一切的运作方式

Selenium 语言绑定reaches to--> 壁虎驱动程序.exefinds-->系统firefox安装(但这可以改变)reaches to inbuilt--> 木偶客户端reaches to--> 木偶服务器reaches to--> 浏览器的 gecko 引擎which inturn calls out --> element.js,interaction.js,action.js,evaluate.js在 gecko 引擎中,取决于绑定或客户端的请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium 3.7 和 Firefox ESR 52.4.1 是否需要 geckodriver? 的相关文章

随机推荐