Как да изберете стойност от падащото меню в Selenium

⚡ Умно обобщение

Изберете стойност от падащото меню в Selenium използва специалния клас Select за управление на HTML SELECT елементи. Класът предоставя методи selectByVisibleText, selectByValue и selectByIndex, които избират опции прецизно и поддържат падащи менюта с множествен избор.

  • 📦 Импортирайте пакета: Вкарайте org.openqa.selenium.support.ui.Select и обвийте WebElement, преди да извикате метод за селекция.
  • 🎯 Изберете правилния метод: Изберете selectByVisibleText, selectByValue или selectByIndex въз основа на това дали текстът на показване, атрибутът стойност или позицията са най-стабилни.
  • 🔁 Работа с падащи менюта с множествен избор: Използвайте isMultiple, за да ги откриете, и deselectAll или deselectByVisibleText, за да изчистите предишните избори.
  • ✅ Проверете избора: Извикайте getFirstSelectedOption, за да потвърдите, че тестът действително е променил състоянието на падащото меню.
  • 🤖 Използвайте AI локатори: Самовъзстановяващите се AI локатори поправят счупени 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.Select.
  2. Създайте инстанция на падащото меню като Select обект в Selenium WebDriver.

Като пример, отворете Mercury Страница за регистрация на Tours (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) изберетеByVisibleText() и отменете избораByVisibleText()

  • Избира или отменя избора на опцията, чийто показан текст съответства на параметъра.
  • Показател: точният текст, показан за опцията.

Пример:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() и deselectByValue()

  • Избира или отменя избора на опцията, чиято value атрибутът съответства на параметъра.
  • Обърнете внимание, че показаният текст и value атрибутите често са различни, както е показано по-долу.
  • Показател: опцията value атрибут.

изберетеПоСтойност и отменете избораПоСтойност

Пример:

drpCountry.selectByValue("234");

3) selectByIndex() и deselectByIndex()

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

Пример:

drpCountry.selectByIndex(0);

4) еМножествен()

  • Връщане TRUE ако падащото меню позволява едновременно избиране на множество опции, в противен случай FALSE.
  • Показател: никой.

Пример:

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

5) отмяна на избора ()

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

Пример:

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

Избиране на елементи в множествен SELECT елемент

- selectByVisibleText() Методът работи и с падащи менюта с множествен избор. Като пример, използвайте https://jsbin.com/osebed/2 като база URLТой показва падащо меню, което приема множество опции едновременно.

Избиране на елементи в елемент за множествен избор

Фрагментът по-долу избира първите две опции, използвайки selectByVisibleText():

Избиране на елементи в код за множествен избор на елементи

Таблица с методи за справка

Тази таблица обобщава всеки метод на Select-class, разгледан по-горе, за бързо търсене.

Команда Descriptйон
изберетеПоВидимТекст() / отменете избораПоВидимТекст() Избира или отменя избора на опция чрез показания текст.
изберетеПоСтойност() / отменете избораПоСтойност() Избира или отменя избора на опция по нейната value атрибут.
изберетеПоИндекс() / отменете избораПоИндекс() Избира или отменя избора на опция по нейния индекс, базиран на нула.
isMultiple() Връща TRUE, ако падащото меню позволява множество опции, в противен случай FALSE.
премахване на всички() Премахва избора на всички предварително избрани опции в падащо меню с множествен избор.

За да контролирате падащите менюта, импортирайте org.openqa.selenium.support.ui.Select първо създайте инстанция на Select и извикайте някой от горните методи.

Въпроси и Отговори

Класът Select е Selenium Помощник за HTML SELECT елементи. Той обгръща WebElement и предоставя selectByVisibleText, selectByValue, selectByIndex, isMultiple и deselectAll за чиста автоматизация на падащите менюта.

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

Класът Select работи само с реални HTML SELECT тагове. Ако WebElement е div, ul или персонализиран уиджет, стилизиран да изглежда като падащо меню, трябва да щракнете върху опции чрез WebElement.click() или Actions API вместо това.

Извикайте getFirstSelectedOption() на инстанцията Select и потвърдете стойността му getText(). За падащи менюта с множествен избор, итерирайте getAllSelectedOptions() и сравнете върнатия списък с очакваните селекции.

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

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

Самовъзстановяващите се локатори, задвижвани от изкуствен интелект, откриват кога идентификаторът, името или XPath на SELECT елемент са се променили и превключват към работеща алтернатива. Те намаляват нестабилните грешки в падащите менюта в конвейерите след препроектиране на потребителския интерфейс.

Да. Асистентите за кодиране с изкуствен интелект превръщат заявка на обикновен английски език, като например „изберете държава АНТАРКТИДА на страницата за регистрация“, в пълен екземпляр на Select с правилния локатор, извикване на selectByVisibleText и твърдение за проверка.

Обобщете тази публикация с: