2017-02-02 3 views
1

У меня есть страница с 5 нг-повторяющимися элементами, и я пытаюсь проверить правильное число (self.assignmentQuestions представляет копию сервера, который должен отображаться на веб-странице с помощью ng-repeat):Почему транспортир находит неправильное количество элементов?

browser.pause() 
$$("[ng-repeat='task in newAssignment.questions track by task._id'] > omni-task").then(function(assignmentQuestions) { 
    expect(assignmentQuestions.length).toEqual(self.assignmentQuestions.length); 

В то время как браузер приостановлен, если я открываю консоль и выполняю $("[ng-repeat='task in newAssignment.questions track by task._id'] > omni-task") jQuery находит 5 элементов. Когда Protractor извлекает текущий набор ElementArrayFinder, он может найти 6 (должно быть только 5). Не должен ли транспортир искать тот же CSS, что и jQuery, при этом состояние страницы одинаково и находит одинаковое количество элементов?

+0

я не знаю, но это звучит родственный: http://stackoverflow.com/questions/39498021/getting-the-size-of-an-array-of-promisesprotractor. Также может быть своего рода причуда в транспортимере в сочетании с ng-repeat. Может быть, он скрывает элемент в качестве шаблона? – Michelangelo

ответ

0

Первый: в транспортирере у вас есть переключатель by.repeater. Затем вы можете использовать count() с возвратом обещания, а затем chec length. Это должно работать:

var elements = element.all(by.repeater('task in newAssignment.questions')); 
expect(elements.count()).to.become(self.assignmentQuestions.length);