#angularjs #protractor
#angularjs #транспортир
Вопрос:
У меня есть следующий html:
<li ng-repeat="item in items">
Some Test
<span class="bubble-grey">
{{ item }}
</span>
</li>
Как найти диапазон «.bubble-grey» внутри первого элемента ng-repeat в транспортире?
Я пробовал:
element.all(by.repeater('item in items')).get(0).findElement(by.css(".bubble-grey")).getText()
Но я получаю «TypeError: Object [объект object] не имеет метода ‘findElement'»
Ответ №1:
Вам не нужно «находить» элемент снова. Попробуйте использовать element explorer
Откройте проводник элементов и перейдите на нужную страницу:
cd node_modulesprotractorbin
node ./elementexplorer.js <your url>
Затем попробуйте эту команду:
element.all(by.repeater('item in items')).get(0).getText()
Я не думаю, что он покажет какой-либо текст, потому что в html нет текста.
Если вы хотите получить текст «Some Test», попробуйте:
element(by.repeater('item in items')).getText()
Ответ №2:
Глядя на API, вместо:
.findElement(by.css(".bubble-grey"));
вы хотите:
.element(by.css(".bubble-grey"));
Ответ №3:
Присвойте вашим промежуткам атрибут id, используя $index из repeat, тогда вы сможете перейти прямо к ним.
<span class="bubble-grey" id="item_{{$index}}">
{{ item }}
</span>
Комментарии:
1. Да, это было бы возможно, но разумно ли добавлять что-то в (производственный) код, который необходим только для тестирования?
2. Вы можете утверждать, что это улучшает ваш код с точки зрения доступности (например, программы чтения с экрана и т. Д.). К сожалению, я недостаточно хорошо знаю сторону транспортира, чтобы исправить это в тесте, я просто знаю угловую сторону вещей.