上周,有关这个名为Marionette的新FirefoxDriver的声音很多。要将Firefox与Selenium一起使用,我们曾经使用“旧的” Selenium FirefoxDriver。从Firefox 48.0开始,将需要使用由Mozilla开发的此新FirefoxDriver。
我了解需要朝这个方向发展,以使每个浏览器都支持和开发其驱动程序,并获得独立于Selenium的驱动程序。此外,假设Mozilla开发自己的驱动程序,将可以更快,更轻松地解决问题和开发功能。
我的问题是,对于那些使用Selenium框架创建自动化测试的人来说 ,使用Marionette代替“旧的” Selenium支持的FirefoxDriver有什么好处吗? _(例如更好的性能,更好的兼容性…)
使用基于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的自动化,因此承诺将继续与未来的版本一起使用。
因此,将Marionette与Firefox 48及更高版本一起使用的主要好处是它可以工作,而其他解决方案则不能。