量角器-将参数从控制台传递到conf.js

时间:2018-11-10 13:27:41

标签: testing npm parameters protractor

我有如下的config.js:

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],

  params: {
    browser: 'chrome' 
},

  capabilities: {
    'browserName': (params.browser || 'chrome'),
  },
 ...
}

现在,我想从控制台传递“浏览器”参数以在IE而不是Chrome上默认运行它:

protractor e2e/protractor.conf.js --params.browser='internet explorer'

protractor e2e/protractor.conf.js -- --params.browser='internet explorer'

我尝试了许多配置,但是每次得到:

[14:17:00] E/configParser - Error code: 105
[14:17:00] E/configParser - Error message: failed loading configuration file e2e/protractor.conf.js
[14:17:00] E/configParser - ReferenceError: params is not defined

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

没有足够的声誉进行澄清:)

确定要正确调用这部分 params.browser 吗?我的意思是 params 。 在我看来, params 没有定义。您正在使用对象,因此请尝试以下操作:this.params.browser

如果您在 config.js 中定义配置,为什么要调用 protractor.conf.js

最后,量角器拥有自己的全局变量。还有一些可以使用它的入口点。例如,您可以在onPrepare()中使用全局量角器对象“浏览器”。要访问这些参数,应使用“ browser.params.browser”之类的东西。我不确定您在解析主conf文件时是否可以访问全局变量。可能有些与process.argv有关的解决方法将为您提供帮助。或重新设计您的逻辑结构。

答案 1 :(得分:0)

如果您的问题是从cmd行指定浏览器名称,则可以执行以下操作:

protractor e2e/protractor.conf.js --browser='internet explorer'

您可以用相同的方式指定以下参数:

--seleniumAddress=
--specs="['./src/**/*.e2e-spec.ts', '']"
--capabilities=<json string>
--suite=

除了reserved参数之外,您还可以在cmd行中通过--params.xxx格式指定任何参数,并在脚本中使用browser.params.xxx格式来使用xxx

但是browser变量不能在conf.js的任何地方使用,只有在打开浏览器后才会初始化。

正如protractor website所说,您可以在browser函数中以及在量角器调用onPrepare函数之后执行的任何地方使用onPrepare