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

В этой статье мы разберем, как при помощи Selenium выбрать элемент выпадающего списка, ориентируясь на его текст, индекс или значение параметра value, а также – как выбрать несколько элементов.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Содержание

Как выбрать элемент из выпадающего списка в Selenium

Перед тем как работать с выпадающими списками в Selenium и управлять ими, мы должны выполнить следующие две операции:

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

В качестве примера рассмотрим страницу регистрации туристической компании Mercury Tours. Перейдите на нее и обратите внимание на выпадающий список “Country” (Страна).

выпадающий список "Country" (Страна)

Шаг 1. Импорт пакета “Select“.

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

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

В приведенном ниже примере мы назвали этот экземпляр drpCountry:

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

Шаг 3. Управление.

Теперь мы можем начать управлять drpCountry, используя любой из доступных методов Select для выбора из выпадающего списка в Selenium. Приведенный ниже пример кода выберет вариант “ANTARCTICA”:

drpCountry.selectByVisibleText("ANTARCTICA");

Выбор класса в Selenium

Класс Select в Selenium представляет собой метод, используемый для реализации тега HTML select. Тег select предоставляет вспомогательные методы для выбора и отмены выбора элементов. Класс Select является обычным классом, поэтому для создания его объекта используется ключевое слово New, которое задает местоположение веб-элемента.

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

Ниже перечислены наиболее распространенные методы, используемые для работы с выпадающим списком в Selenium.

1. selectByVisibleText() и deselectByVisibleText()

  • Выбирает/отменяет выбор текста, соответствующий параметру
  • Параметр – точно отображаемый текст конкретной опции

Пример:

drpCountry.selectByVisibleText("ANTARCTICA");

2. selectByValue() и deselectByValue()

  • Выбирает/отменяет выбор элемента, атрибут value которого совпадает с указанным параметром
  • Помните, что не все выпадающие элементы имеют одинаковый текст и value, как в примере ниже
  • Параметр – значение атрибута value

Пример:

drpCountry.selectByValue("234");

3. selectByIndex() и deselectByIndex()

  • Выбирает/отменяет выбор элемент по заданному индексу
  • Параметр – индекс выбираемого элемента

Пример:

drpCountry.selectByIndex(0);

4. isMultiple()

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

Пример:

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

5. deselectAll()

  • Отменяет выбор всех элементов. Это возможно только в том случае, если выпадающий список поддерживает множественный выбор
  • Параметр не требуется

Пример:

drpCountry.deselectAll();

Полный код методов выбора в Selenium

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);

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

		//Selecting Items in a Multiple SELECT elements
		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() будут выбраны первые два варианта:

множественный выбор с помощью метода selectByVisibleText()

Резюме

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

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

Перевод статьи «How to Select Value from DropDown using Selenium Webdriver».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *