У меня довольно простой тест Protractor, который должен проверять текстовое значение в строке ng-repeat.Protractor - getText() возвращает Array вместо String
Вот мой HTML:
<div ng-repeat="destination in destinations">
<span>{{destination.city}}, {{destination.country}}</span>
</div>
А вот мои JS:
lastDestination = element.all(by.repeater('destination in destinations').row(1));
expect(lastDestination.getText()).toEqual("Madrid, Spain");
В documentation for getText() состояния:
Get the visible (i.e. not hidden by CSS) innerText of this element, including sub-elements, without any leading or trailing whitespace.
Так что я бы ожидать текст из диапазона тега в строке и для возврата, но при запуске теста Protractor я получаю следующую ошибку для утверждения:
Ожидаемый ['Мадрид, Испания'] равный 'Мадрид, Испания'.
GetText(), кажется, возвращает массив вместо строки.
Я попытался решения GetText() 'ы обещали, но все-таки получил ту же ошибку:
lastDestination = element.all(by.repeater('destination in destinations').row(1));
lastDestination.getText().then(function (text) {
expect(text).toEqual("Madrid, Spain");
});
я могу получить вокруг вопроса путем воздействия на первое значение в массиве:
expect(text[0]).toEqual("Madrid, Spain");
Но я все равно хотел бы знать, почему это не работает в первую очередь.
Любые идеи?
Обновление: A similar bug has been reported на странице Gractub на портале Protractor, поэтому может быть, что функция getText() просто не работает должным образом.
Ваш код работает, однако, документация для GetText() говорится, что «Получить видимый (т.е. не скрыт CSS) InnerText этого элемента, включая вложенные элементы, без каких-либо начальных или конечных пробелов». Поэтому я считаю, что getText() в строке также должен работать. Я нашел аналогичную проблему здесь https://github.com/angular/protractor/issues/1794, поэтому я думаю, что это может быть ошибкой. – Matt
Я должен отметить, что вы вызываете getText на обещание, которое в любом случае не подразумевает использование документации. –
Имеет смысл, спасибо за то, что вы вникаете в этот и подробный ответ :) – Matt