对于 Selenium 测试人员,使用 Marionette FirefoxDriver 而不是旧的 Selenium FirefoxDriver 有啥好处?

Posted

技术标签:

【中文标题】对于 Selenium 测试人员,使用 Marionette FirefoxDriver 而不是旧的 Selenium FirefoxDriver 有啥好处?【英文标题】:What are the benefits of using Marionette FirefoxDriver instead of the old Selenium FirefoxDriver for a Selenium tester?对于 Selenium 测试人员,使用 Marionette FirefoxDriver 而不是旧的 Selenium FirefoxDriver 有什么好处? 【发布时间】:2016-12-19 09:22:03 【问题描述】:

上周有很多关于这款名为 Marionette 的新 FirefoxDriver 的噪音。要将 Firefox 与 Selenium 一起使用,我们曾经使用“旧”的 Selenium FirefoxDriver。从 Firefox 48.0 开始,将需要使用 Mozilla 开发的这个新的 FirefoxDriver。

我知道需要改变方向,以使每个浏览器都支持和开发其驱动程序,并使驱动程序独立于 Selenium。此外,如果Mozilla开发自己的驱动程序,应该会更快、更容易地解决问题和开发功能。

我的问题是,对于那些使用 Selenium 框架创建自动化测试的人,使用 Marionette 代替“旧”的 Selenium 支持的 FirefoxDriver 有什么好处吗? _(例如更好的性能,更好的兼容性...)

【问题讨论】:

可能倾向于认为问题“过于宽泛”的潜在亲密选民。它不是。为什么需要这种新方法有一个简单的技术原因。我已经在我的回答中概述了它。 【参考方案1】:

使用 Mozilla 提供的、基于 Marionette 的 Geckodriver 解决方案的主要优势在于它适用于 Firefox 48 及更高版本。 Selenium 项目提供和维护的旧版驱动程序不适用于 Firefox 48 或更高版本,并且永远不会适用于这些版本的 Firefox。

旧版驱动程序作为 Firefox 扩展程序实现。当 WebDriver 启动 Firefox 时,此扩展安装在驱动程序使用的配置文件中。 Firefox 48 引入了两个禁用此浏览器扩展的新功能。第一个是所谓的“电解”功能,即多进程 Firefox。电解改变了扩展必须以 Selenium 团队尚未花时间完全理解的方式处理浏览器的方式。

第二个更重要的要求是,在浏览器允许加载之前,所有浏览器扩展必须由 Mozilla 签名。后一个功能在 Firefox 中已经有多个版本,但从 48 开始,它不能再被禁用。 WebDriver 浏览器扩展为 Firefox 浏览器引入了几个有效的安全问题,因此不会由 Mozilla 的安全团队签名。这反过来又使扩展无法运行,因此 Selenium 无法再与 Firefox 通信。首先由 Mozilla 开发和维护的基于 Marionette 的解决方案受到他们的祝福,可用于 Firefox 的自动化,因此承诺它将继续与未来的版本一起工作。

因此,在 Firefox 48 及更高版本中使用 Marionette 的主要好处是它可以工作,而其他解决方案则不能。

【讨论】:

如果基于 Marionette 的 Geckodriver 不被用作 Firefox 的扩展,那么驱动 Firefox 的机制是什么?请提供任何简单的示例。任何关于 Marionette 驱动程序中电解的小想法都可以;就像驱动程序如何接管 Firefox 浏览器一样。 用于驱动浏览器的机制现在是 Firefox 本身的一部分。它内置在浏览器中,这就是它由 Mozilla 维护的原因。他们的驱动程序代码完全是open source,他们提供的geckodriver 可执行文件充当翻译器,从WebDriver 接收HTTP 调用,以使用浏览器本机理解的TCP 上的Marionette 通信协议。但是,如果您使用的是 Selenium,则用户无需关心细节;它将使用与以前相同的代码工作。 @JimEvans 我发现 selenium 3 默认使用 marionette 驱动程序。那么如何使用现有的代码集工作。 I am facing a similar issue

以上是关于对于 Selenium 测试人员,使用 Marionette FirefoxDriver 而不是旧的 Selenium FirefoxDriver 有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章

是什么原因让华为测试工程师都说puppeteer比selenium好呢?

selenium 截图

python3里使用selenium webdriver自动化测试

Selenium自动化:代码测试与无代码测试

Cypress和Selenium

python+selenium自动化软件测试(第9章) :Logging模块