Nightwatch.js。获取节点子节点,遍历它们

时间:2016-01-12 06:34:22

标签: nightwatch.js

我的任务是获取某些元素的子元素,遍历它们,并使用nightwatch断言进行一些测试。这是代码示例,我需要的是:

browser.url("http://someurl.com")
     .getAttribute("#parent", "children", function (children) {
         var assert = browser.assert;

         var fisrtChild  = children[0];
         var secondChild = children[1];

         assert.equal(fisrtChild.innerHTML, "Hello");
         assert.equal(secondChild.innerHTML, "World");
    })

那么,Nightwatch可以做这样的事吗?

P.S。我试图使用'元素'命令,但它返回如下内容:

{ state: 'success',
sessionId: '63af98a9-d395-4e44-9529-e24a7ad7ff87',
hCode: 1223583237,
value: [],
class: 'org.openqa.selenium.remote.Response',
status: 0 }

2 个答案:

答案 0 :(得分:0)

首先,“children”不是HTML元素的有效属性。

其次,如果你给它一个参数,回调函数将简单地传递所述命令的结果。因此,显示的对象实际上是getAttribute命令的结果。

您可以使用browser.execute命令来执行您要执行的操作

基本上做以下事情: -

var firstChild;
var secondChild;

browser.execute(function() {

       var childNodes = [];

       childNodes.push(document.getElementById('parentID').childNodes);
       firstChild = childNodes[0].innerHTML;
       secondChild = childNodes[1].innerHTML;

}, [])

然后,您就可以对firstChildsecondChild的值执行断言。

注意:没有测试过这个,你可能需要稍微玩一下,但希望你能得到一般的想法

答案 1 :(得分:0)

您可以尝试以下代码。它将获取所有按钮,然后依次单击所有按钮。

browser
  .url("http://someurl.com")
  .elements('css selector', "button", function (links) {
      for (var i = 0; i < links.value.length; i++) {
        browser.elementIdClick(links.value[i].ELEMENT);
      }
   })
相关问题