我有一个测试,我想 通过命令行 传递语言键,并让浏览器 在 chromeOption args 中使用该语言键。

我将如何使用 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 未定义”之类的错误而崩溃。
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
        }
    }
}

有任何想法吗?

最佳答案

我能够通过节点进程对象访问命令行来更改语言功能:

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?

关于angularjs - 我可以使用参数更改 Protractor 配置功能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31214183/

10-16 17:59