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

Javascript 在Nightwatch JS中使用API函数中的元素,javascript,nightwatch.js,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",

我有一个页面对象,正在创建一个用于测试文件的命令。当我使用像.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会使您无法使用元素,但是有什么方法可以解决这个问题吗?我一直在为我的每个命令创建变量,但我觉得这违背了创建元素的目的。

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

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

它应该返回element1css:div.some-class

如果我能想出更好的解决方案,我会在这里发表评论