在Nightwatch JS中使用API​​函数中的元素

时间:2017-02-06 21:15:29

标签: javascript nightwatch.js

我有一个页面对象,我正在创建一个在我的测试文件中使用的命令。当我使用像.elements()这样的WebDriver API命令时,我创建的元素不会被传递,也不能在回调函数中使用。

示例代码:

var commands = {
  command1: function () {
    var element1 = "div.some-class"; //I end up doing this
    this.api
      .elements("css selector", "@element1", function (result) {
        return this
          .click("@element2");
      })  
  }
}

module.exports = {
  url: function() {
    return this.launchUrl;
  },
  elements: {
    element1: "div.some-class",
    element2: "h2[id=some-id]"
  },
  commands: [commands]
}

我注意到调用.api会让你无法使用元素,但有什么方法可以解决这个问题吗?我一直在为我的每个命令制作变量,但我觉得这样做会破坏元素的目的。

1 个答案:

答案 0 :(得分:1)

使其在自定义函数中更通用,你可以使用:

var objectSelector = this.page.pageobject.elements[elementName]

它应该返回element1 css:div.some-class

如果我想到更好的解决方案,请将其发布在评论中