Я перехожу от Protractor к Nightwatch.js, и я сталкиваюсь с некоторыми трудностями с тем, как Nightwatch выполняет обещания.Как выполнить обещание с помощью Nightwatch
Чтобы привести пример, я пытаюсь подсчитать количество элементов, удовлетворяющих заданному критерию. Функция подсчета в объект страницы, так отделено от самого теста:
Команда страница объекта:
countToDoList: function(browser) {
browser.elements('css selector', "input[ng-model='todo.done']", function(result){
return result.value.length;
});
}
и вызов в тесте:
'Angular - 1' : function(browser) {
var angular = browser.page.angularPO();
var mainPage = angular.section.main;
angular.openMainPage(browser);
var countToDoBoxes = 0;
countToDoBoxes = mainPage.countToDoList(browser);
console.log("countToDoBoxes = " + countToDoBoxes);
browser.end();
}
Это возвращает «countToDoBoxes = undefined ". И, основываясь на моем (коротком) опыте с Транспортером, я предполагаю, что это связано с тем, что функция не выполняет обещание, когда она передается в «countToDoBoxes».
Есть ли способ сделать эту работу?
Если вы ожидаете 'browser.elements' вернуть обещание, то вы, вероятно, следует использовать' .then() 'вместо передачи обратного вызова непосредственно. Кроме того, вам, очевидно, придется «возвращать» метод 'countToDoList'. – Bergi
Только для моих собственных интересов, почему вы переключаетесь? – SuperUberDuper
@SuperUberDuper: Я работаю над другим проектом, и этот новый работает с Nightwatch.js (не мой выбор и не может его изменить) – Majuj