我有一个测试,我想通过命令行传递语言密钥,并让浏览器在chromeOption args 中使用该语言密钥。< / p>
我如何使用默认的en-us,但是传入我想要的任何语言,并根据传入的内容将其更改为默认值?
我的conf文件中有这个:
exports.config = {
...
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'lang=en-419',
]
}
},
params: {
language: {
lang: 'en-US'
}
},
...
};
我想运行此命令并让浏览器切换到es-419以进行此次测试
protractor conf.js --params.language.lang=es-419
如果没有传递任何内容,我可以添加什么来修改基于传递语言的功能?默认情况下使用en-us?
我尝试了一些事情,这些事情会因“对象没有方法功能”或“chromeOptions undefined”等错误而崩溃。
browser.capabilities.chromeOptions.args.update(browser.params.login.lang);
browser.getCapabilities().then(function(){
chromeOptions.args = browser.params.language.lang;
});
browser.manage().capabilities.chromeOptions.args(browser.params.language.lang);
capabilities: {
chromeOptions: {
args: { 'lang=' + this.params.language.lang
}
}
}
有什么想法吗?
答案 0 :(得分:1)
我能够通过节点进程对象访问命令行来改变语言功能:
function getLangParam(defaultValue) {
// Each arg will have the entire string value between
// whitespace, dashes and all.
var PARAM_KEY = '--params.language.lang=';
var result = defaultValue;
process.argv.forEach(function (arg) {
// Check if the arg starts with the PARAM_KEY
// and update the result if we find it
if (arg.indexOf(PARAM_KEY) === 0) {
result = arg.substring(PARAM_KEY.length);
}
});
}
var lang = getLangParam('en-US');
exports.config = {
capabilities: {
browserName: 'chrome',
chromeOptions: {
args:['lang=' + lang]
}
}
// The rest of your config...
};
根据此SO问题解析配置时,浏览器对象不可用:Can I access parameters in my protractor configuration file?