一尘不染

承诺配置多种功能

selenium

这是“ 用量角器设置Firefox轮廓”主题的后续。

根据setFirefoxProfilehowto,可以使用特殊的“ helper”
js代码
设置firefox配置文件,该代码使用firefox- profileq库来动态制作编码的firefox配置文件。

这对我一直有效,直到我尝试
使用多个浏览器并进行配置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密钥。换句话说,它找不到要运行的测试。

我试图将其包含在助手自身specscapabilities字典中,但是错误仍然存​​在。

如果使用,如何解决错误并设置Firefox配置文件multiCapabilities


解决方法是,我创建了一个单独的量角器配置文件,仅配置了firefox(使用capabilities),并设置grunt为运行量角器两次-一个用于此“带有配置文件的Firefox”配置,另一个用于所有其他浏览器。


阅读 231

收藏
2020-06-26

共1个答案

一尘不染

现在,如果我们不使用多功能,则量角器只能接受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)。

有关示例,请参见https://github.com/angular/protractor/blob/master/spec/getCapabilitiesConf.js

2020-06-26