Sådan vælger du værdi fra dropdown-menuen Selenium

⚡ Smart opsummering

Vælg værdi fra rullemenuen i Selenium bruger den dedikerede Select-klasse til at styre HTML SELECT-elementer. Klassen eksponerer selectByVisibleText-, selectByValue- og selectByIndex-metoder, der vælger indstillinger præcist og understøtter rullemenuer med flere valgmuligheder.

  • 📦 Importer pakken: Indsæt org.openqa.selenium.support.ui.Select og ombryd WebElementet, før du kalder en hvilken som helst selektionsmetode.
  • 🎯 Vælg den rigtige metode: Vælg selectByVisibleText, selectByValue eller selectByIndex baseret på om visningstekst, værdiattribut eller position er mest stabil.
  • 🔁 Håndter rullemenuer med flere valgmuligheder: Brug isMultiple til at registrere dem, og deselectAll eller deselectByVisibleText for at rydde tidligere valg.
  • Bekræft valget: Kald getFirstSelectedOption for at bekræfte, at testen faktisk ændrede rullemenuens tilstand.
  • 🤖 Brug AI-lokaliseringsværktøjer: Selvreparerende AI-lokaliseringsværktøjer reparerer ødelagte XPaths i select-elementer efter ændringer i brugergrænsefladen, keeping Dropdown-tests er stabile på tværs af udgivelser.

Vælg værdi fra rullemenuen i Selenium

Hvad er Select-klassen i Selenium?

Vælg klasse i Selenium er en hjælperklasse fra org.openqa.selenium.support.ui pakke der lader WebDriver interagere med HTML <select> elementer. Den eksponerer metoder til at vælge og fravælge muligheder efter synlig tekst, værdi eller indeks, og til at registrere, om en rullemenu accepterer flere valg.

Fordi Select er en regelmæssig Java klasse, opretter du en instans med new søgeord og videregive WebElementet, der peger på <select> tag på siden.

Sådan vælger du dropdown i Selenium

Før håndtering af en rullemenu i Selenium, to trin er nødvendige:

  1. Importer pakken org.openqa.selenium.support.ui.Select.
  2. Instantier rullemenuen som en Select objekt i Selenium WebDriver.

Som et eksempel, åbn Mercury Tours' tilmeldingsside (https://demo.guru99.com/test/newtours/register.php) og find rullemenuen "Land".

Vælg Dropdown in Selenium

Trin 1) Importer Select-pakken.

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

Trin 2) Erklærer rullemenuen som en forekomst af klassen Select. I eksemplet nedenfor er instansen navngivet drpCountry.

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

Trin 3) Begynd at styre rullemenuen. Brug en hvilken som helst Select-metode til at vælge en mulighed. Eksemplet nedenfor vælger "ANTARKTIK":

drpCountry.selectByVisibleText("ANTARCTICA");

Vælg metoder i Selenium

Select-klassen tilbyder adskillige metoder til at interagere med dropdown-indstillinger. De fem mest almindelige er beskrevet nedenfor.

1) selectByVisibleText() og deselectByVisibleText()

  • Vælger eller fravælger den indstilling, hvis viste tekst matcher parameteren.
  • Parameter: den nøjagtige tekst, der vises for indstillingen.

Eksempel:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() og deselectByValue()

  • Vælger eller fravælger den indstilling, hvis value Attributten matcher parameteren.
  • Bemærk, at den viste tekst og value Attributterne er ofte forskellige, som vist nedenfor.
  • Parameter: muligheden value attribut.

vælgEfterVærdi og fravælgEfterVærdi

Eksempel:

drpCountry.selectByValue("234");

3) selectByIndex() og deselectByIndex()

  • Vælger eller fravælger indstillingen ved det givne indeks. Indekser er nulbaserede.
  • Parameter: heltalsindekset for optionen.

Eksempel:

drpCountry.selectByIndex(0);

4) erMultiple()

  • Returpolitik TRUE hvis rullemenuen tillader flere valg på samme tid, ellers FALSE.
  • Parameter: ingen.

Eksempel:

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

5) fravælgAlle()

  • Rydder alle valgte muligheder. Kun gyldig på rullemenuer med flere valgmuligheder.
  • Parameter: ingen.

Eksempel:

drpCountry.deselectAll();

Komplet Code af udvalgte metoder i Selenium

Følgende Java Programmet demonstrerer Select-klassen på både en rullemenu med enkeltvalg og en rullemenu med flere valg.

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

Valg af elementer i et multipelt SELECT-element

selectByVisibleText() Metoden fungerer også på rullemenuer med flere valgmuligheder. Brug f.eks. https://jsbin.com/osebed/2 som base URLDen viser en rullemenu, der accepterer flere valg på én gang.

Valg af elementer i et element med flere valgmuligheder

Uddraget nedenfor vælger de to første muligheder ved hjælp af selectByVisibleText():

Valg af elementer i en kode med flere valg af elementer

Metodereferencetabel

Denne tabel opsummerer alle Select-class-metoder, der er dækket ovenfor, for hurtig opslag.

Kommando Beskrivelse
vælgMedSynligTekst() / fravælgMedSynligTekst() Vælger eller fravælger en indstilling ud fra dens viste tekst.
selectEfterVærdi() / deselectEfterVærdi() Vælger eller fravælger en indstilling ved hjælp af dens value attribut.
vælgEfterIndex() / fravælgEfterIndex() Vælger eller fravælger en indstilling ud fra dens nulbaserede indeks.
erMultiple() Returnerer SAND, hvis rullemenuen tillader flere valg, ellers FALSK.
Fravælg alle() Fravælger alle tidligere valgte indstillinger på en rullemenu med flere valgmuligheder.

For at styre rullemenuer skal du importere org.openqa.selenium.support.ui.Select pakke først, opret derefter en Select-instans og kald en af ​​metoderne ovenfor.

Ofte Stillede Spørgsmål

Select-klassen er en Selenium hjælper til HTML SELECT-elementer. Den ombryder et WebElement og eksponerer selectByVisibleText, selectByValue, selectByIndex, isMultiple og deselectAll for ren automatisering af rullemenuer.

Foretræk selectByValue, når value-attributten er stabil, da etiketter ofte ændres ved lokalisering. Brug selectByVisibleText, når teksten er autoritativ, og undgå selectByIndex, når rækkefølgen af ​​indstillinger kan ændre sig.

Select-klassen fungerer kun på rigtige HTML SELECT-tags. Hvis WebElementet er en div-, ul- eller brugerdefineret widget, der er designet til at ligne en rullemenu, skal du i stedet klikke på indstillinger via WebElement.click() eller Actions API'en.

Kald getFirstSelectedOption() på Select-instansen og angiv dens getText()-værdi. For rullemenuer med flere valg, gentag getAllSelectedOptions() og sammenlign den returnerede liste med de forventede valg.

Ja. Brug isMultiple() til at bekræfte, at rullemenuen tillader flere værdier, og kald derefter selectByVisibleText flere gange, eller deselectAll() for at nulstille. Rullemenuer med flere valg kræver, at HTML SELECT-elementet deklarerer multiple-attributten.

Brug WebDriverWait med ExpectedConditions.numberOfElementsToBeMoreThan på option locatoren. Dette sikrer, at asynkront udfyldte rullemenuer er klar, før Select-klassen instantieres og en hvilken som helst selektionsmetode kaldes.

AI-drevne selvreparerende locators registrerer, når et SELECT-elements id, navn eller XPath er ændret, og skifter til et fungerende alternativ. De reducerer ustabile dropdown-fejl i pipelines efter UI-redesign.

Ja. AI-kodningsassistenter omdanner en anmodning på almindeligt engelsk, f.eks. "vælg land ANTARKTIK på registreringssiden", til en komplet Select-instans med den rigtige locator, selectByVisibleText-kald og en verifikationspåstand.

Opsummer dette indlæg med: