Невозможно использовать by.repeater() для элемента ng-repeat через транспортир
У меня есть следующий HTML-код Angular, и я пытаюсь выполнить сквозное тестирование с помощью транспортира для нажатия на раскрывающийся список.
Вот HTML:
<ul class="dropdown-menu">
<li ng-repeat="currency in availableCurrencies">
<a href="#" class="ng-binding">USD</a>
</li>
<li ng-repeat="currency in availableCurrencies">
<a href="#" class="ng-binding">EUR</a>
</li>
<li ng-repeat="currency in availableCurrencies">
<a href="#" class="ng-binding">GBP</a>
</li>
</ul>
Вот код транспортира /js, который предположительно должен нажимать на EUR:
it('Change Currency to EUR',function(){
var curr_EUR = element.all(by.repeater('currency in availableCurrencies').row(1));
curr_EUR.click();
/*curr_EUR.element(by.linkText('EUR')).click();*/
});
Возникли проблемы при нажатии на элемент, ошибка, которую я получаю:
ElementNotVisibleError: элемент не виден.
Кто-нибудь может указать, где я иду не так?
3 ответа
Обычно это означает, что элемент не виден.
Я предлагаю вам попробовать это как обычный пользователь. Я подозреваю, что если вы точно выполните действия, указанные в коде транспортира , когда вы хотите нажать EUR, он будет невидим.
Вместо этого вам придется что-то сделать (возможно, щелкнуть что-нибудь), чтобы сделать это видимым. Добавьте это что-то в свой код транспортира, и оно должно работать.
Таким образом, ваш код выглядит как выпадающее меню, вам, вероятно, придется (в вашем коде транспортира) щелкнуть раскрывающееся меню, прежде чем евро станет видимым.
Две вещи, которые нужно сделать:
- сначала нужно открыть выпадающий список
- тогда вам нужно нажать на
a
элемент внутриli
Код (я думаю, вы можете избежать использования by.repeater()
локатор на всех)
var dropdown = element(by.css('ul.dropdown-menu'));
dropdown.click();
dropdown.element(by.linkText('EUR')).click();
Попробуйте с этим все должно работать. Я буду работать на все комбинации
`for(i=0; i<4; i++) {
element(by.className("dropdown-menu").click();
element.all(by.repeater('currency in availableCurrencies').row(i)).click();
}`