Jak wybrać wartość z listy rozwijanej w Selenium

⚡ Inteligentne podsumowanie

Wybierz wartość z listy rozwijanej w Selenium Używa dedykowanej klasy Select do kontrolowania elementów HTML SELECT. Klasa ta udostępnia metody selectByVisibleText, selectByValue i selectByIndex, które precyzyjnie wybierają opcje i obsługują rozwijane listy wielokrotnego wyboru.

  • 📦 Zaimportuj pakiet: Uruchom org.openqa.selenium.support.ui.Select i opakuj WebElement przed wywołaniem jakiejkolwiek metody wyboru.
  • 🎯 Wybierz właściwą metodę: Wybierz opcję selectByVisibleText, selectByValue lub selectByIndex w zależności od tego, czy wyświetlany tekst, atrybut wartości lub pozycja są bardziej stabilne.
  • 🔁 Obsługa rozwijanych list wielokrotnego wyboru: Użyj isMultiple, aby je wykryć, i odznacz All lub odznacz ByVisibleText, aby wyczyścić poprzednie wybory.
  • Sprawdź wybór: Wywołaj getFirstSelectedOption, aby potwierdzić, że test faktycznie zmienił stan listy rozwijanej.
  • 🤖 Użyj lokalizatorów AI: Samonaprawiające się lokalizatory AI naprawiają uszkodzone ścieżki XPath elementów wybieranych po zmianach w interfejsie użytkownikaping testy rozwijane są stabilne w różnych wersjach.

Wybierz wartość z listy rozwijanej w Selenium

Czym jest klasa Select w Selenium?

Wybierz klasę w Selenium to klasa pomocnicza z org.openqa.selenium.support.ui pakiet umożliwiający WebDriverowi interakcję z HTML <select> Elementy. Udostępnia metody umożliwiające zaznaczanie i odznaczanie opcji według widocznego tekstu, wartości lub indeksu oraz wykrywanie, czy lista rozwijana akceptuje wiele wyborów.

Bo Select jest regularny Java klasa, tworzysz instancję za pomocą new słowo kluczowe i przekaż WebElement, który wskazuje na <select> tag na stronie.

Jak wybrać menu rozwijane w Selenium

Przed obsługą listy rozwijanej Selenium, wymagane są dwa kroki:

  1. Zaimportuj pakiet org.openqa.selenium.support.ui.Wybierz.
  2. Utwórz listę rozwijaną jako Select obiekt w Selenium Sterownik sieciowy.

Na przykład otwórz Mercury Strona rejestracji wycieczek (https://demo.guru99.com/test/newtours/register.php) i znajdź rozwijaną listę „Kraj”.

Wybierz menu rozwijane Selenium

Krok 1) Importuj pakiet Select.

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

Krok 2) Zadeklaruj element rozwijany jako instancję klasy Select. W poniższym przykładzie instancja ma nazwę drpCountry.

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

Krok 3) Rozpocznij sterowanie listą rozwijaną. Użyj dowolnej metody Select, aby wybrać opcję. Poniższy przykład wybiera „ANTARCTICA”:

drpCountry.selectByVisibleText("ANTARCTICA");

Wybierz Metody w Selenium

Klasa Select udostępnia kilka metod interakcji z opcjami rozwijanymi. Pięć najpopularniejszych opisano poniżej.

1) selectByVisibleText() i deselectByVisibleText()

  • Zaznacza lub odznacza opcję, której wyświetlany tekst odpowiada parametrowi.
  • Parametr: Dokładny tekst wyświetlany dla opcji.

Przykład:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() i deselectByValue()

  • Zaznacza lub odznacza opcję, której value atrybut pasuje do parametru.
  • Należy pamiętać, że wyświetlany tekst i value atrybuty są często różne, jak pokazano poniżej.
  • Parametr: opcja value atrybutów.

selectByValue i deselectByValue

Przykład:

drpCountry.selectByValue("234");

3) selectByIndex() i deselectByIndex()

  • Zaznacza lub odznacza opcję o podanym indeksie. Indeksy zaczynają się od zera.
  • Parametr: indeks całkowity opcji.

Przykład:

drpCountry.selectByIndex(0);

4) isMultiple()

  • Zwroty TRUE jeśli rozwijana lista pozwala na jednoczesny wybór wielu opcji, w przeciwnym razie FALSE.
  • Parametr: Żaden.

Przykład:

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

5) odznaczWszystko()

  • Czyści wszystkie zaznaczone opcje. Działa tylko w przypadku list rozwijanych z wieloma opcjami wyboru.
  • Parametr: Żaden.

Przykład:

drpCountry.deselectAll();

Absolutna Code wybranych metod w Selenium

Poniższy Java Program demonstruje klasę Select zarówno na liście rozwijanej z pojedynczym wyborem, jak i wieloma wyborami.

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

Wybieranie elementów w elemencie SELECT z wieloma elementami

selectByVisibleText() Metoda ta działa również w przypadku list rozwijanych z wieloma opcjami wyboru. Na przykład użyj https://jsbin.com/osebed/2 jako zasadę URL. Otwiera listę rozwijaną, która umożliwia jednoczesne wybranie wielu opcji.

Wybieranie elementów w elemencie wielokrotnego wyboru

Poniższy fragment kodu wybiera pierwsze dwie opcje za pomocą selectByVisibleText():

Wybieranie elementów w kodzie elementu wielokrotnego wyboru

Tabela odniesień do metod

W tej tabeli podsumowano wszystkie metody klasy Select omówione powyżej, co ułatwia szybkie wyszukiwanie.

Command OPIS
wybierzWedługWidocznegoTekstu() / odznaczWedługWidocznegoTekstu() Zaznacza lub odznacza opcję na podstawie wyświetlanego tekstu.
wybierzPoWartości() / odznaczPoWartości() Zaznacza lub odznacza opcję według jej value atrybutów.
wybierz według indeksu () / odznacz według indeksu () Zaznacza lub odznacza opcję według jej indeksu zaczynającego się od zera.
jest wielokrotny() Zwraca wartość TRUE, jeśli lista rozwijana pozwala na wybór wielu opcji, w przeciwnym wypadku zwraca wartość FALSE.
odznacz wszystkie() Odznacza wszystkie poprzednio wybrane opcje na rozwijanej liście wielokrotnego wyboru.

Aby sterować polami rozwijanymi, zaimportuj org.openqa.selenium.support.ui.Select Najpierw utwórz pakiet, następnie utwórz instancję Select i wywołaj dowolną z powyższych metod.

FAQ

Klasa Select jest Selenium Pomocnik dla elementów HTML SELECT. Opakowuje WebElement i udostępnia funkcje selectByVisibleText, selectByValue, selectByIndex, isMultiple i deselectAll, co zapewnia przejrzystą automatyzację rozwijanych menu.

Preferuj selectByValue, gdy atrybut value jest stabilny, ponieważ etykiety często zmieniają się ze względu na lokalizację. Używaj selectByVisibleText, gdy tekst jest autorytatywny, i unikaj selectByIndex, gdy kolejność opcji może ulec zmianie.

Klasa Select działa tylko z prawdziwymi znacznikami HTML SELECT. Jeśli WebElement jest elementem div, ul lub niestandardowym widgetem stylizowanym na listę rozwijaną, należy klikać opcje za pomocą WebElement.click() lub API Actions.

Wywołaj getFirstSelectedOption() na instancji Select i potwierdź jej wartość getText(). W przypadku list rozwijanych z wieloma opcjami wyboru, wykonaj iterację getAllSelectedOptions() i porównaj zwróconą listę z oczekiwanymi opcjami.

Tak. Użyj isMultiple(), aby potwierdzić, że lista rozwijana dopuszcza wiele wartości, a następnie wywołaj selectByVisibleText wielokrotnie lub deselectAll(), aby zresetować. Listy rozwijane z wieloma wartościami wymagają elementu HTML SELECT do zadeklarowania atrybutu multiple.

Użyj WebDriverWait z parametrem ExpectedConditions.numberOfElementsToBeMoreThan w lokalizatorze opcji. Dzięki temu asynchronicznie wypełniane listy rozwijane będą gotowe przed utworzeniem instancji klasy Select i wywołaniem dowolnej metody wyboru.

Samonaprawiające się lokalizatory oparte na sztucznej inteligencji wykrywają zmianę identyfikatora, nazwy lub ścieżki XPath elementu SELECT i przełączają się na działającą alternatywę. Zmniejszają one liczbę niestabilnych błędów rozwijania w potokach po przeprojektowaniu interfejsu użytkownika.

Tak. Asystenci kodowania AI przekształcają proste żądanie, takie jak „wybierz kraj ANTARKTYDA na stronie rejestracji”, w kompletny przypadek Select z odpowiednim lokalizatorem, wywołaniem selectByVisibleText i potwierdzeniem weryfikacji.

Podsumuj ten post następująco: