【问题标题】:How can I use command line arguments in Angularjs Protractor?如何在 Angularjs Protractor 中使用命令行参数?
【发布时间】:2014-06-01 20:56:58
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: javascript angularjs selenium webdriver protractor


    【解决方案1】:

    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

    【讨论】:

    • 如果您尝试在命令行“protractor --params.myArray=[1,2,3]”上传递一个数组,它将被视为您需要 JSON.parse 的字符串(browser.params.myArray);
    • 另一个快速说明,命令行上的 = 符号是可选的。所以 "protractor --params.myNum=50 ..." 相当于 "protractor --params.myNum 50 ..." 本来我以​​为答案中的评论是错误的。
    • 像魅力一样工作!但是,由于它将参数作为字符串,因此处理布尔值会造成混乱。我的提示:如果您的代码中有默认值,请将它们设置为 false 并在必要时从 CLI 覆盖它们(例如量角器 ... --params.myFlag=true),因为“true”和“false”实际上都是虚假的.如果您必须通过 CLI 传递 false,则必须使用唯一的虚假字符串:protractor ... ---params.myFlag= (最后将其留空,是的,它可以工作,就像看起来一样错误! )
    • 如何将 url 参数设置为另一个参数而不是值? ex --params.url=params.stagingUrl 不起作用
    • @artdias90:我认为这不可能直接实现。但是,如果您将 URL 存储在变量中,则可以重用该变量。或者你可以在你的 shell 中提前一行引入一个。我用所有设置变量创建了一个大哈希,由主环境的名称索引,我只传递环境的名称作为量角器参数。大致:Environments = {test: {url: '...', name: '...', ...}, live: {...}, ...}--params.env=test.
    【解决方案2】:

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

    解决方法

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

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

    MY_VAR=Dev protractor tmp/config.js
    

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

    console.log(process.env.MY_VAR)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 2018-10-08
      • 2021-08-21
      • 2012-11-30
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多