Есть такая функция в pageObject
this.openFilmPage = function () {
browser.waitForElementVisible("div[class='pg'", 1000);
for (var i = 0; i < 4; i += 1) {
console.log('Итерация № ' + i);
browser.waitForElementVisible("div[class='app'] > div[class='pg'] > div[class='home carousel'] > div[class='home-lst carousel-lst'] > div[class*='home-lst-itm nav-itm']:nth-of-type(" + i + ") > div[class='badge badge-currency']", 100, function (result) {
if (result.value) {
return browser;
console.log('Платный фильм обнаружен');
} else {
return browser;
console.log('Платный фильм отсутствует');
}
});
} return browser;
}
Есть вызов в самом тесте
'TC67 Переход на страницу платного фильма': function (browser) {
browser
.page.App().open()
.page.App().openFilmPage()
.end();
}
После запуска получаю
Running: TC67 Переход на страницу платного фильма
Итерация № 0
Итерация № 1
Итерация № 2
Итерация № 3
После чего идет проверка, один раз, с нулевой позицией, тест проваливается поскольку на данной позиции отсутствует ожидаемый элемент.
Я ожидал что все проверки будут выполняться поочередно и в результате я получу элемент который соответствует указанному css path.
Но как показала практика это не так, циклы по всей видимости выполняются в асинхронном режиме, как это можно побороть?