比较元素的属性

时间:2016-11-18 09:40:42

标签: javascript arrays protractor

var DrpStack = browser.findElement(by.xpath(XPath))
             var Elems = DrpStack.findElements(by.tagName(TagName))
             Elems.then(function(list){ 
                for (var i = 0; i < list.length; i++) {
                    if (list[i].getAttribute("aria-pressed")=='true') {
                        Labl1.list[i].getAttribute("onlabel");

                    } else {
                        console.log("FAIL");
                    }
                }

                Q.all(Labl1).done(function (result) {
                    // Q.All will  print the results when the lookups and processing are done
                    console.log(result.length);
                    console.log(result);
                });
            });

我在这里检查“咏叹调”的属性是否属于&#39;是真还是假。如果为true,则元素被推入数组,否则应该打印false。 它不起作用,日志始终打印失败。我做错了什么请帮忙。

1 个答案:

答案 0 :(得分:1)

方法getAttribute返回Promise。所以你首先需要解决它才能获得价值。

在您的情况下,您可以使用promise.filter过滤属性:

var filter = protractor.promise.filter;

filter(browser.findElements(...), (elem, i) => {
  return elem.getAttribute("aria-pressed").then(attr => {
      if(attr === "true") return true;
      console.log(`failed attribute at index {i}`);
  });
}).then(results => {
  console.log("elements with attribute:", results);
});