twistedxtranzistor
@twistedxtranzistor

Как выбрать элемент из генерируемого комбобокса для теста на селениуме (вебдрайвер)?

Добрый день.
Есть строка поиска, при вводе в которую, например, Новосибирск выпадает список. Генерируется он из БД в несколько тысяч элементов и выводит только несколько связанных с Новосибирском пунктов. ID у этих пунктов всегда разные, даже если не обновлять страницу и всегда вводить Новосибирск, пункты будут одинаковые, но id разные. Мне же требуется выбрать, например, первый пункт из этого списка и нажать на него. И я не могу понять, как это реализовать, если id в качестве локатора уже не подходит.
<ul id="ui-id-269" class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" tabindex="0" style="z-index: 1; display: none; top: 290.2px; left: 859.5px; width: 361px;">
<li class="ui-menu-item" role="presentation">
<a id="ui-id-462" class="ui-corner-all" tabindex="-1">
Новосибирск
<span class="gray3">(в черте города)</span>
</a>
</li>
<li class="ui-menu-item" role="presentation">
<a id="ui-id-463" class="ui-corner-all" tabindex="-1">
</li>
<li class="ui-menu-item" role="presentation">
<a id="ui-id-464" class="ui-corner-all" tabindex="-1">
</li>

Прошу помощи.
  • Вопрос задан
  • 3700 просмотров
Решения вопроса 1
А можно так:
findElement(By.xpath("//li[contains(@class,'ui-menu-item') and contains(.,'Новосибирск')]"))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Можно сделать клик по элементу, послать событие нажатия клавиши вниз и еще раз клик
Ответ написан
Комментировать
@alexkuzpro
У селениума в Java есть чудо класс Select у которого есть все нужное вам и вы можете выбрать по конкретному тексту с помощью метода - public void selectByVisibleText(String text)

Как пример

new Select(driver.findElement("селектор выпадающего списка")).selectByVisibleText("Новосибирск");
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы