如何在Angularjs Protractor中使用命令行参数?

时间:2014-04-17 14:17:17

标签: javascript angularjs selenium webdriver protractor

我使用Protractor执行一些端到端测试,我想通过命令行传入登录凭据,而不是将它们存储在spec文件中。我发现有人使用process.argv.forEach的帖子,但是如何存储这些值并在另一个spec文件中使用它们?我有一个名为login-spec.js的文件,我想使用命令行参数。

谢谢!

2 个答案:

答案 0 :(得分:91)

reference config中,此部分可能很有趣:

  // The params object will be passed directly to the protractor instance,
  // and can be accessed from your test. It is an arbitrary object and can
  // contain anything you may need in your test.
  // This can be changed via the command line as:
  //   --params.login.user 'Joe'
  params: {
    login: {
      user: 'Jane',
      password: '1234'
    }
  },

您可以在代码中访问这样的params对象:browser.params.login.user

所以在你的情况下如果你这样调用量角器:

protractor ... --params.login.user=abc --params.login.password=123

您可以在代码中访问这些变量,如下所示:

browser.params.login.userbrowser.params.login.password

答案 1 :(得分:1)

接受答案的缺点 - 这些变量将在浏览器启动时可用。因此,如果您打算在配置中使用它们(创建 if/else 逻辑),这将不起作用。

解决方法

量角器是一个节点进程。任何节点进程都可以使用自定义节点变量启动。不确定它是如何在 Windows 中完成的(如果你知道如何做,请发表评论)但对于 mac 和任何 linux/unix 操作系统,你可以

用这样的环境变量启动量角器

MY_VAR=Dev protractor tmp/config.js

然后它将在您流程中的任何地方可用

console.log(process.env.MY_VAR)