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

Здесь я проверяю, является ли атрибут «ария-нажата» истинным или ложным. Если true, что элемент помещается в массив, в противном случае он должен печатать false. Не работает, журнал всегда печатает FAIL. Что я делаю неправильно. Пожалуйста помоги.Сравнение атрибутов элемента

ответ

1

Метод getAttribute возвращает обещание. Поэтому вам сначала нужно решить эту проблему, чтобы получить значение.

В вашем случае вы можете отфильтровать атрибут с 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

Thanx мат. Обещание сработало. – Ramii

Смежные вопросы