Как выбрать значение из раскрывающегося списка Selenium

⚡ Умное резюме

Выберите значение из выпадающего списка в Selenium Для управления HTML-элементами SELECT используется специальный класс Select. Класс предоставляет методы selectByVisibleText, selectByValue и selectByIndex, которые точно выбирают параметры и поддерживают выпадающие списки с множественным выбором.

  • 📦 Импортируйте пакет: Добавьте класс org.openqa.selenium.support.ui.Select и оберните в него WebElement перед вызовом любого метода выбора.
  • 🎯 Выберите подходящий метод: Выберите selectByVisibleText, selectByValue или selectByIndex в зависимости от того, какой параметр является наиболее стабильным: отображаемый текст, атрибут значения или позиция.
  • 🔁 Обработка выпадающих списков с множественным выбором: Используйте isMultiple для их обнаружения, а deselectAll или deselectByVisibleText для очистки предыдущих выборов.
  • Проверьте выбранный вариант: Вызовите метод getFirstSelectedOption, чтобы убедиться, что тест действительно изменил состояние выпадающего списка.
  • 🤖 Используйте локаторы на основе искусственного интеллекта: Самовосстанавливающиеся локаторы на основе ИИ исправляют неработающие XPath-пути для выбора элементов после изменений в пользовательском интерфейсе, обеспечивая...ping Тесты выпадающих списков остаются стабильными во всех версиях.

Выберите значение из выпадающего списка в Selenium

Что такое Select Class в Selenium?

Выберите класс в Selenium это вспомогательный класс из org.openqa.selenium.support.ui Пакет, позволяющий WebDriver взаимодействовать с HTML. <select> элементы. Он предоставляет методы для выбора и отмены выбора параметров по видимому тексту, значению или индексу, а также для определения того, допускает ли выпадающий список множественный выбор.

Так как Select регулярный Java класс, вы создаете экземпляр с помощью new ключевое слово и передайте WebElement, который указывает на <select> тег на странице.

Как выбрать раскрывающийся список в Selenium

Перед обработкой выпадающего списка в SeleniumДля этого требуется два шага:

  1. Импорт пакета org.openqa.selenium.support.ui.Выбрать.
  2. Создайте экземпляр выпадающего списка как Select объект в Selenium ВебДрайвер.

В качестве примера откройте Mercury Страница регистрации туров (https://demo.guru99.com/test/newtours/register.php) и найдите выпадающее меню «Страна».

Выберите раскрывающийся список в Selenium

Шаг 1) Импортируйте пакет Select.

import org.openqa.selenium.support.ui.Select;

Шаг 2) Объявите раскрывающийся элемент как экземпляр класса Select. В приведенном ниже примере экземпляр называется drpCountry.

Select drpCountry = new Select(driver.findElement(By.name("country")));

Шаг 3) Начните управлять выпадающим списком. Для выбора варианта используйте любой из методов выбора. В приведенном ниже примере выбран вариант «АНТАРКТИКА»:

drpCountry.selectByVisibleText("ANTARCTICA");

Выберите методы в Selenium

Класс Select предоставляет несколько методов для взаимодействия с выпадающими списками. Пять наиболее распространенных описаны ниже.

1) selectByVisibleText() и deselectByVisibleText()

  • Выбирает или отменяет выбор варианта, отображаемый текст которого соответствует параметру.
  • Параметр: Точный текст, отображаемый для данного варианта.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() и deselectByValue()

  • Выбирает или отменяет выбор варианта, для которого value Атрибут соответствует параметру.
  • Обратите внимание, что отображаемый текст и value Атрибуты часто различаются, как показано ниже.
  • Параметр: вариант value атрибутов.

selectByValue и deselectByValue

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

drpCountry.selectByValue("234");

3) selectByIndex() и deselectByIndex()

  • Выбирает или отменяет выбор опции по указанному индексу. Индексы начинаются с нуля.
  • Параметр: Целочисленный индекс опции.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

drpCountry.selectByIndex(0);

4) isMultiple()

  • Returns TRUE если выпадающий список позволяет выбирать несколько вариантов одновременно, в противном случае — нет. FALSE.
  • Параметр: никто.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

if (drpCountry.isMultiple()) {
    // do something here
}

5) deselectAll()

  • Сбрасывает все выбранные параметры. Действительно только для выпадающих списков с несколькими вариантами выбора.
  • Параметр: никто.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

drpCountry.deselectAll();

Завершенный Code Избранные методы в Selenium

Следующие Java Программа демонстрирует использование класса Select как для выпадающего списка с одним вариантом выбора, так и для выпадающего списка с несколькими вариантами выбора.

package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.By;

public class accessDropDown {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        String baseURL = "https://demo.guru99.com/test/newtours/register.php";
        WebDriver driver = new FirefoxDriver();
        driver.get(baseURL);

        // Single-select drop-down
        Select drpCountry = new Select(driver.findElement(By.name("country")));
        drpCountry.selectByVisibleText("ANTARCTICA");

        // Multi-select drop-down
        driver.get("http://jsbin.com/osebed/2");
        Select fruits = new Select(driver.findElement(By.id("fruits")));
        fruits.selectByVisibleText("Banana");
        fruits.selectByIndex(1);
    }
}

Выбор элементов в элементе множественного выбора

selectByVisibleText() Этот метод также работает с выпадающими списками, содержащими несколько вариантов выбора. В качестве примера используйте https://jsbin.com/osebed/2 в качестве основы URL. Он отображает выпадающее меню, позволяющее одновременно выбрать несколько вариантов.

Выбор элементов в элементе множественного выбора

Приведённый ниже фрагмент кода выбирает первые два варианта, используя selectByVisibleText():

Выбор элементов в коде элемента множественного выбора

Таблица справочных данных по методам

В этой таблице приведено краткое описание всех методов класса Select, рассмотренных выше, для быстрого поиска.

Command Описание
selectByVisibleText() / deselectByVisibleText() Выбирает или отменяет выбор опции по отображаемому тексту.
selectByValue() / deselectByValue() Выбирает или отменяет выбор опции по ее значению. value атрибутов.
selectByIndex() / deselectByIndex() Выбирает или отменяет выбор опции по ее индексу, начинающемуся с нуля.
isMultiple() Возвращает TRUE, если выпадающий список позволяет выбрать несколько вариантов, в противном случае — FALSE.
убрать выделение со всего() Снимает выделение со всех ранее выбранных параметров в выпадающем списке с множественным выбором.

Для управления выпадающими списками импортируйте... org.openqa.selenium.support.ui.Select Сначала создайте пакет, затем создайте экземпляр Select и вызовите любой из описанных выше методов.

Часто задаваемые вопросы (FAQ)

Класс Select — это Selenium Вспомогательная функция для HTML-элементов SELECT. Она оборачивает WebElement и предоставляет возможности selectByVisibleText, selectByValue, selectByIndex, isMultiple и deselectAll для удобной автоматизации выпадающих списков.

При выборе атрибута value отдавайте предпочтение selectByValue, поскольку метки часто меняются в процессе локализации. Используйте selectByVisibleText, когда текст является авторитетным, и избегайте selectByIndex, когда порядок параметров может измениться.

Класс Select работает только с реальными HTML-тегами SELECT. Если WebElement представляет собой div, ul или пользовательский виджет, оформленный как выпадающий список, то для выбора параметров необходимо использовать WebElement.click() или API Actions.

Вызовите метод getFirstSelectedOption() для экземпляра Select и проверьте значение, полученное с помощью метода getText(). Для выпадающих списков с несколькими вариантами выбора выполните итерацию метода getAllSelectedOptions() и сравните возвращенный список с ожидаемыми вариантами выбора.

Да. Используйте isMultiple(), чтобы убедиться, что выпадающий список допускает несколько значений, затем несколько раз вызовите selectByVisibleText или deselectAll() для сброса. Для выпадающих списков с несколькими вариантами выбора необходимо, чтобы атрибут multiple был указан в HTML-элементе SELECT.

Используйте WebDriverWait с ExpectedConditions.numberOfElementsToBeMoreThan для локатора параметров. Это гарантирует, что асинхронно заполняемые выпадающие списки будут готовы до создания экземпляра класса Select и вызова любого метода выбора.

Самовосстанавливающиеся локаторы на основе искусственного интеллекта определяют, когда идентификатор, имя или XPath элемента SELECT изменились, и переключаются на работающую альтернативу. Они уменьшают количество сбоев в работе выпадающих списков после редизайна пользовательского интерфейса.

Да. ИИ-помощники в программировании преобразуют простой запрос, например, «выберите страну АНТАРКТИКА на странице регистрации», в полноценный экземпляр Select с правильным локатором, вызовом функции selectByVisibleText и утверждением проверки.

Подведем итог этой публикации следующим образом: