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

Bre*_*dan 52 javascript selenium webdriver angularjs protractor

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

谢谢!

Laj*_*res 91

参考配置中,此部分可能很有趣:

  // 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'
    }
  },
Run Code Online (Sandbox Code Playgroud)

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

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

protractor ... --params.login.user=abc --params.login.password=123
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果你尝试在命令行"protractor --params.myArray = [1,2,3]"上传递一个数组,它将被视为一个字符串,你需要JSON.parse(browser.params.myArray); (4认同)
  • 另一个快速说明,命令行上的=符号是可选的.所以"量角器--params.myNum = 50 ......"相当于"量角器--params.myNum 50 ......"原本我以为答案中的评论是错误的. (2认同)