@jehord

Как пользоваться циклами в nightwatch.js?

Есть такая функция в 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.

Но как показала практика это не так, циклы по всей видимости выполняются в асинхронном режиме, как это можно побороть?
  • Вопрос задан
  • 893 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы