Автоматизация тестирования - проблема с выбором элемента из выпадающего списка - PullRequest
1 голос
/ 29 января 2020

Я хочу выбрать элемент из выпадающего списка в модальном окне. Функция

setItemFromDropDownList(urlElement: ElementFinder, n: number) {

        this.clickElement(urlElement);
        urlElement.all(by.tagName('li')).get(n - 1).click();
    }

Но это дало мне сообщение об ошибке: Failed: Index out of bound. Попытка получить доступ к элементу с индексом: 1, но есть только 0 элементов, соответствующих локатору. По (css селектор, li)

Элемент сопоставляется с идентификатором

serviceDropdown: ElementFinder=element(by.id('servicePhase'));

Один из элементов в html

<p-dropdownitem class="ng-tns-c8-390 ng-star-inserted" style=""><li role="option" class="ui-dropdown-item ui-corner-all" aria-label="Paczka pocztowa zagraniczna"><!----><span class="ng-star-inserted">Paczka pocztowa zagraniczna</span><!----></li></p-dropdownitem>

Я думаю, что это закодировано, потому что выпадающий список находится на модальном окне, так что я могу сделать?

1 Ответ

0 голосов
/ 31 января 2020

Вам необходимо отследить, когда тест не пройден, возможно, он не пройден, поскольку значение раскрывающегося списка не отображается на странице, вам нужно подождать, пока оно не станет видимым, прежде чем его выбрать:

var EC = protractor.ExpectedConditions;
setItemFromDropDownList(urlElement: ElementFinder, n: number) {    
    this.clickElement(urlElement);     
    browser.driver.wait(function () {
    browser.wait(EC.visibilityOf(urlElement.all(by.tagName('li')).get(n - 1)), 10000);
    urlElement.all(by.tagName('li')).get(n - 1).click();
});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...