2015-06-16 2 views
1

Существует функция в pageObjectКак использовать цикл в nightwatch.js

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(); 
} 

После запуска я получаю следующий результат в консоли

Выполнение: TC67 Переход на страницу платного фильма Итерация № 0 Итерация № 1 Итерация № 2 Итерация № 3

Тогда есть чек, один раз в нулевом положении, тест не пройден, потому что в этой позиции не ожидается пункт.

Я ожидаю, что все тесты будут выполняться один за другим, и в результате я получаю элемент, который соответствует указанному пути css.

Но, как показал опыт, это не так, циклы, похоже, работают в асинхронном режиме, так как его можно преодолеть?

PS. Извините за мой английский.

ответ

1

Похоже, вы пытаетесь создать пользовательскую команду. Проверьте этот раздел:

http://nightwatchjs.org/guide#writing-custom-commands

Вы заметите, что имя файла, который необходимо создать должно быть фактическое имя метода (так в вашем случае: openFilmPage.js)

Наконец; вам нужно добавить путь в nightwatch.json в какую папку находятся ваши пользовательские команды (http://nightwatchjs.org/guide#basic-settings)

Надеюсь, что это поможет!

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