Я пытаюсь создать функцию, которая будет расчесывать массив элементов и возвращать первый экземпляр, соответствующий критериям.Транспортир - Возвращение ожидающего обещания при работе
Это то, что у меня есть в моем тесте, что делает работу :
element.all(by.css('_cssSelector_')).filter(function(elms, index) {
return elms.getAttribute('height').then(function(height) {
return parseInt(height) > 0;
});
}).then(function(validElms) {
browser.actions().mouseMove(validElms[0]).perform();
}
... но если бы я действовал на это, он не работает:
getValidElm = function() {
var validElm = element.all(by.css('_cssSelector_')).filter(function (elms, index) {
return elms.getAttribute('height').then(function (height) {
return parseInt(height) > 0;
});
}).then(function (validElms) {
return validElms[0];
});
return validElm;
}
Если Затем я запускаю:
var validElmFromPage = getValidElm();
console.log(validElmFromPage);
я получаю: Promise :: 2046 {[[PromiseStatus]]: «до»}
Что указывает на вопрос о чем-то внутри функции не решения перед тем, как используется переменная вне функции. Прочитав (широко) через сообщения здесь, и даже этот замечательный пост в блоге (http://spin.atomicobject.com/2014/12/17/asynchronous-testing-protractor-angular/), я до сих пор не могу понять, что это за сделка. Я знаю, что это что-то простое, скорее всего, controlFlow?
Благодарим за помощь.