У меня есть веб-приложение, которое я тестирую с помощью Protractor. К сожалению, при загрузке в каждой из различных областей приложения может отображаться перекрывающийся счетчик загрузки. Поэтому я хочу подождать, пока все прядильщики не станут невидимыми, прежде чем я продолжу. Спиннеры становятся невидимыми, а не полностью исчезают из DOM.
Вот что я до сих пор придумал. К сожалению, он всегда выполняется, пока не истечет время ожидания.
function waitForAllElementsToDisappear(elementArray) {
return function () {
return elementArray.reduce(function (acc, elem) {
if (acc == null) acc = true;
try {
return elem.isDisplayed().then(function(displayValue) {
if (displayValue) return false;
else return acc;
});
}
catch (err) {
return acc;
}
});
};
};
browser.wait(this.waitForAllElementsToDisappear(
element.all(by.css('div[ng-if~="mmc.menuTree.showSpinner"]'))),
5000);
Надеюсь, это слишком сложно и есть хорошее элегантное решение.
Спасибо за помощь.