基本上与此相同:https://stackoverflow.com/questions/25163674/can-you-do-multiple-onprepares-per-browser-instance但由于没有答案或评论,我会再次发布。
我想在两个不同的浏览器上使用两个用户配置文件登录。
我会在我的配置文件中使用类似的东西:
multiCapabilities: [{
browserName: 'chrome',
specs: ['profile_1.spec.js'],
login: {email: 'profile_1',
password: 'pw1'}
}, {
browserName: 'chrome',
specs: ['profile_2.spec.js'],
login: { email: 'profile_2',
password: 'pw2'}
}]
由于我的登录页面不是 Angular 的,我需要使用 onPrepare 并且我只能设置登录参数一次。
有没有办法将登录参数从 multiCapativity 数组传递到 onPrepare 函数,或者在 multiCapability 对象中包含特定的 onPrepares?
最佳答案
您可以通过在代码中添加逻辑来解决此问题。
在 Protractor 1.7 中,您可以调用 browser.getProcessedConfig()
,它会返回您的配置。
您可以将任意字段添加到您的 browserName 中。
multiCapabilities: [{
browserName: 'chrome',
specs: ['profile_1.spec.js'],
name: 'profile1'
}, {
browserName: 'chrome',
specs: ['profile_2.spec.js'],
name: 'profile2'
}]
并使用参数:
params: {
profile1: {
email: 'CA',
password: 'pw123'
},
profile2: {
email: 'Sup',
password: 'pw123'
}
},
然后准备:
onPrepare: function() {
browser.getProcessedConfig().then(function(config) {
//do something with browser.params[config.capabilities.name]
});
},
关于angularjs - 使用 multiCapabilites 时的多个 onPrepare 或动态登录参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456121/