对于Selenium测试仪,使用Marionette FirefoxDriver而不是旧的Selenium FirefoxDriver有什么好处?

Lor*_*lgo 16 selenium selenium-firefoxdriver selenium-webdriver firefox-marionette

上周,这款名为Marionette的新FirefoxDriver出现了很多噪音.要将Firefox与Selenium一起使用,我们过去常常使用"旧的"Selenium FirefoxDriver.从Firefox 48.0开始,将需要使用由Mozilla开发的这个新的FirefoxDriver.

我知道需要改变这个方向以获得每个浏览器支持并开发其驱动程序并使驱动程序独立于Selenium.此外,假设Mozilla开发自己的驱动程序,它将更快,更容易地解决问题和开发功能.

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

Jim*_*ans 30

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

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

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

所以使用Marionette和Firefox 48及更高版本的主要好处是它可以工作,而其他解决方案则不然.

  • 用于驱动浏览器的机制现在是Firefox本身的一部分.它内置于浏览器中,这就是为什么它由Mozilla维护.他们的驱动程序代码完全是[开源](https://github.com/mozilla/geckodriver),他们提供的`geckodriver`可执行文件充当翻译器,从WebDriver接收HTTP调用以使用Marionette通信协议浏览器本身可以理解的TCP.但是,如果您正在使用Selenium,则用户无需关心细节; 它将使用以前工作的相同代码. (2认同)