这是“ 用量角器设置Firefox轮廓”主题的后续。
根据setFirefoxProfilehowto,可以使用特殊的“ helper” js代码设置firefox配置文件,该代码使用firefox- profile和q库来动态制作编码的firefox配置文件。
setFirefoxProfile
firefox- profile
q
这对我一直有效,直到我尝试 使用多个浏览器并进行配置multiCapabilities:
multiCapabilities
exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', multiCapabilities: [ { browserName: 'chrome', specs: [ 'footer.disabledCookies.spec.js' ], chromeOptions: { prefs: { 'profile.default_content_settings.cookies': 2 } } }, ... // other capabilities here ... helper.getFirefoxProfile() }, ... }
通过此设置,我遇到了一个错误(此处完整回溯):
规范模式与任何文件都不匹配。
据我了解,这意味着使用firefox配置文件的设置缺少specs密钥。换句话说,它找不到要运行的测试。
specs
我试图将其包含在助手自身specs的capabilities字典中,但是错误仍然存在。
capabilities
如果使用,如何解决错误并设置Firefox配置文件multiCapabilities?
解决方法是,我创建了一个单独的量角器配置文件,仅配置了firefox(使用capabilities),并设置grunt为运行量角器两次-一个用于此“带有配置文件的Firefox”配置,另一个用于所有其他浏览器。
grunt
现在,如果我们不使用多功能,则量角器只能接受promise作为功能。这样做的原因是因为multiCapabilities在新流程中运行每个任务,所以不能传递promise(功能)(单个功能起作用是因为我们没有分叉)。
或者,我们可以在启动器中解析功能,然后再将解析的功能传递到新流程中。但是,这将破坏设置代理(https://github.com/angular/protractor/pull/1040)的能力,这依赖于在driverProvider设置后解决的功能承诺。
我想不出一种简单的方法(无需大量重构),但这绝对是可行的。我为量角器(https://github.com/angular/protractor/issues/1594)创建了一个问题。如果您需要此功能,或者您有其他实现此想法的方法,请遵循该说明和/或对此进行评论。
现在,您需要使用原始问题中提到的解决方法。
更新
https://github.com/angular/protractor/pull/1629支持这一点。从量角器1.6开始(或者如果您同步至母版),您可以传入config.getMultiCapabilities喜欢onPrepare和的函数onCleanup。此函数可以返回一个承诺给multiCapabilties(即的数组capabilities)。
config.getMultiCapabilities
onPrepare
onCleanup
multiCapabilties
有关示例,请参见https://github.com/angular/protractor/blob/master/spec/getCapabilitiesConf.js。