我可以用params改变量角器conf功能吗?

时间:2015-07-03 21:04:40

标签: angularjs protractor

我有一个测试,我想通过命令行传递语言密钥,并让浏览器在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
        }
    }
}

有什么想法吗?

1 个答案:

答案 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?