如何使用 node.js 将命令行参数值传递给量角器中的配置文件

How to pass command line arguments values to config file in protractor using node.js

我正在尝试使用 NPM 包“yargs”获取命令行参数值,而不是从 config.ts 文件中检索值。

示例: 我的 config.ts 文件看起来像

export const config: Config = {  
 username: process.argv[3],                                                                     
  password: process.argv[4]                       
}

并且在我的 package.json 文件中,我已经为“test”定义了我的脚本:“./node_modules/.bin/protractor typeScript/config/config.js",

在我的测试用例中,我正在检索值 "config.username" & "config.password"

所以当我执行 npm test --username1 --password1 时,我正在执行的测试用例是从 config.ts 文件中选取值,而不是我传递的值 "username1" 和 "password1" 从命令行。 有人可以帮我从命令行而不是 config.ts 文件中选择值吗?

提前致谢..!!!

1.

对于量角器端,请查看 this page

根据其内容,将其放入您的 conf.js:

module.exports = {
  params: {
    login: {
      email: 'default',
      password: 'default'
    }
  },
    //  * other config options *
}

你可以在CMD中给它传递任意参数,如下:

protractor --baseUrl='http://some.server.com' conf.js --parameters.login.email=example@gmail.com 
--parameters.login.password=foobar

所以你最终在你的规格中有这个:

describe('describe some test', function() {
  it('describe some step', function() {
    browser.get(browser.baseUrl);
    $('.email').sendKeys(browser.params.login.email);
    $('.password').sendKeys(browser.params.login.password);
  });
});

但是!这些变量在您的配置中不可用,仅在规范中可用。

2.

如果您需要在配置中重用变量(条件套件等)我这样做的方式如下

假设您有一个开始测试的命令

protractor config.js --baseUrl="www.example.com"

你可以像这样在命令之前声明环境变量

INFO=something PARAM=parameter protractor config.js --baseUrl="www.example.com"

然后在您的量角器配置中,您可以通过键入

来引用这些变量
console.log(process.env.INFO);
console.log(process.env.PARAM);

请注意,此方法甚至不需要额外的包