2016-11-18 15 views
3
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); 
       }); 
      }); 

ここでは、 'aria-pressed'の属性がtrueまたはfalseであるかどうかを確認しています。 trueの場合、その要素は配列にプッシュされます。それ以外の場合は、falseが出力されます。 これは機能しません。ログは常にFAILを出力します。私は何が間違っている。助けてください。要素の属性の比較

答えて

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); 
}); 
+0

ありがとうメイト。プロミスは働いた。 – Ramii