[英]How can I use different params in protractor multiplecapabilities test?
我正在尝试运行多种功能测试,并且每个浏览器都使用不同的登录名,但出现此错误:
失败:无法读取未定义的属性“用户名”
规格文件:
loginPage.pegarInput('username',browser.params[0].username),
loginPage.pegarInput('password',browser.params[0].password)`
CONFIG.JS 文件:
multiCapabilities: [{
browserName: 'chrome',
params: {
username:'username',
password:'password'
},
chromeOptions: {
args: [ "--headless", "--disable-gpu","--no-sandbox"]
}
},
{
browserName: 'safari',
params: {
username:'username',
password:'password'
}
}],
我可能会采用这种方法,但有不同的方法可以实现您想要的。 这种方法在配置中有一个带有所有凭据的 params 对象。 然后在 onPrepare 中,它找出正在运行的浏览器(为每个功能运行一个单独的 onPrepare)并将该 browserName 保存为全局变量。 要使用登录凭据,您可以使用方括号表示法使用新的全局变量访问特定的浏览器名称。
exports.config = {
params: {
chrome: {
username: 'chromeUsername',
password: 'chromePassword'
},
firefox: {
username: 'firefoxUsername',
password: 'firefoxPassword'
}
},
multiCapabilities:{
...
},
onPrepare: async () => {
const capabilities = await browser.getCapabilities();
global.currentBrowser = capabilities.map_.get('browserName');
}
...
}
用法
loginPage.pegarInput('username',browser.params[currentBrowser].username)
您可以尝试browser.getProcessedConfig()
如下:
return browser.getProcessedConfig().then(function(config) {
// config.capabilities is the CURRENT capability being run, if
// you are using multiCapabilities.
console.log('Executing capability', config.capabilities);
loginPage.pegarInput('username', config.params.username)
});
// when use await/async
config = await browser.getProcessedConfig()
loginPage.pegarInput('username', config.params.username)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.