Selenium WebDriver: как выбрать значение в раскрывающемся списке?

Я пытаюсь заставить мой сценарий Selenium щелкнуть значение в раскрывающемся меню. Однако у меня возникают проблемы с выполнением каких-либо действий в раскрывающемся списке после того, как я изначально щелкнул по нему. Я искал в Интернете и могу найти ответы только в раскрывающемся списке «Выбрать».

Вот HTML-код раскрывающегося списка:

<span class = "select2-selection__rendered" title = "1st item"
      id = "select2-id_template_or_inspection-container">
</span>

Вот фрагмент кода, в котором я нажимаю на раскрывающийся список:

//Choose a Template from Dropdown

WebElement dropdownBtn = webDriver.findElement(
            By.id("select2-id_template_or_inspection-container"));

dropdownBtn.click();

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

WebElement dropdownItemBtn = webDriver
      .findElement(By.id("select2-id_template_or_inspection-result-hlwt-tmpl-2583"));
dropdownItemBtn.click();

Однако идентификаторы значений в раскрывающемся списке меняются каждый раз при перезагрузке страницы.

Я ценю помощь!

Пожалуйста, создайте Минимальный, полный и проверяемый пример, который включает скрипт, который вы используете, чтобы попытаться выполнить эту задачу. Также отметьте язык, на котором написан ваш сценарий, если необходимо.

Mihai Chelaru 04.06.2018 16:48

Благодарность! Я обновил вопрос

Jodie Long 04.06.2018 16:54

Можете ли вы также указать URL-адрес, по которому находится этот раскрывающийся список? Если идентификаторы изменятся, вам придется попытаться выбрать элемент, используя что-то еще, например, с помощью селектора CSS.

Mihai Chelaru 04.06.2018 17:14

@Long, раскрывающийся список включает, по крайней мере, параметры, ваш данный HTML-код не включает HTML-код списка параметров. Пожалуйста, узнайте их и обновите вопрос (не в комментариях). Если вы не можете их найти, укажите общедоступный URL-адрес, если он есть в вашем приложении. Или вы знаете, что ваш раскрывающийся список - это какой-то известный плагин, ложный плагин выпадающего списка jQuery.

yong 05.06.2018 02:31

Не могли бы вы подтвердить, что идентификатор тега span полностью меняется каждый раз или какая-то часть остается постоянной?

Vinit Mehta 05.06.2018 16:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
3 637
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать такой подход:

  1. Это то, что вы сделали, чтобы щелкнуть диапазон, чтобы открыть его раскрывающиеся элементы.

    //Choose a Template from Dropdown
    
    WebElement dropdownBtn = webDriver.findElement(By.id("select2-id_template_or_inspection-container"));
    dropdownBtn.click();
    
  2. Поскольку идентификаторы значений в раскрывающемся списке меняются каждый раз при перезагрузке страницы, вы можете использовать dropdownBtn для поиска его дочерних / дочерних элементов в качестве элементов раскрывающегося списка и щелкнуть нужный раскрывающийся список:

    List<WebElement> dropdownItems = dropdownBtn.findElements(By.tagName("tagNameOfDropdownItems"));
    dropdownItems.get(0).click(); // click on first Dropdown, for example
    

Поскольку идентификаторы меняются динамически, давайте попробуем найти элементы по tagName. Надеюсь, поможет.

Другие вопросы по теме