Hur man väljer värde från rullgardinsmenyn Selenium

⚡ Smart sammanfattning

Välj värde från rullgardinsmenyn i Selenium använder den dedikerade Select-klassen för att styra HTML SELECT-element. Klassen exponerar metoderna selectByVisibleText, selectByValue och selectByIndex som väljer alternativ exakt och stöder rullgardinsmenyer för flerval.

  • 📦 Importera paketet: Hämta org.openqa.selenium.support.ui.Select och radbryt WebElementet innan du anropar någon urvalsmetod.
  • 🎯 Välj rätt metod: Välj selectByVisibleText, selectByValue eller selectByIndex baserat på om visningstext, värdeattribut eller position är mest stabilt.
  • 🔁 Hantera rullgardinsmenyer med flera val: Använd isMultiple för att upptäcka dem och avmarkeraAll eller avmarkeraByVisibleText för att rensa tidigare val.
  • Verifiera valet: Anropa getFirstSelectedOption för att bekräfta att testet faktiskt ändrade tillståndet i listrutan.
  • 🤖 Använd AI-lokalisering: Självläkande AI-lokaliseringsverktyg reparerar trasiga XPaths för select-element efter UI-ändringar, keeping Dropdown-tester är stabila över olika utgåvor.

Välj värde från rullgardinsmenyn i Selenium

Vad är Select-klassen i Selenium?

Ocuco-landskapet Välj klass i Selenium är en hjälpklass från org.openqa.selenium.support.ui paket som låter WebDriver interagera med HTML <select> element. Den exponerar metoder för att markera och avmarkera alternativ efter synlig text, värde eller index, och för att upptäcka om en rullgardinsmeny accepterar flera val.

Därför att Select är en regelbunden Java klassen, skapar du en instans med new nyckelordet och skicka WebElementet som pekar på <select> taggen på sidan.

Hur man väljer dropdown i Selenium

Innan du hanterar en rullgardinsmeny i Selenium, två steg krävs:

  1. Importera paketet org.openqa.selenium.support.ui.Select.
  2. Instansiera rullgardinsmenyn som en Select objekt i Selenium WebDriver.

Som ett exempel, öppna Mercury Tours registreringssida (https://demo.guru99.com/test/newtours/register.php) och leta reda på rullgardinsmenyn ”Land”.

Välj Dropdown in Selenium

Steg 1) Importera Select-paketet.

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

Steg 2) Deklarera rullgardinselementet som en instans av klassen Select. I exemplet nedan heter instansen drpCountry.

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

Steg 3) Börja styra rullgardinsmenyn. Använd valfri Select-metod för att välja ett alternativ. Exemplet nedan väljer "ANTARKTIKA":

drpCountry.selectByVisibleText("ANTARCTICA");

Välj Metoder i Selenium

Klassen Select erbjuder flera metoder för att interagera med rullgardinsmenyer. De fem vanligaste beskrivs nedan.

1) selectByVisibleText() och deselectByVisibleText()

  • Markerar eller avmarkerar det alternativ vars visade text matchar parametern.
  • Parameter: den exakta texten som visas för alternativet.

Exempel:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() och deselectByValue()

  • Markerar eller avmarkerar det alternativ vars value attributet matchar parametern.
  • Observera att den visade texten och value Attributen är ofta olika, som visas nedan.
  • Parameter: alternativets value attribut.

selectAfValue och deselectAfValue

Exempel:

drpCountry.selectByValue("234");

3) selectByIndex() och deselectByIndex()

  • Markerar eller avmarkerar alternativet vid det angivna indexet. Index är nollbaserade.
  • Parameter: heltalsindex för alternativet.

Exempel:

drpCountry.selectByIndex(0);

4) ärMultiple()

  • Returer TRUE om rullgardinsmenyn tillåter flera val samtidigt, annars FALSE.
  • Parameter: ingen.

Exempel:

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

5) avmarkeraAlla()

  • Rensar alla valda alternativ. Gäller endast i rullgardinsmenyer med flera val.
  • Parameter: ingen.

Exempel:

drpCountry.deselectAll();

Komplett Code av valda metoder i Selenium

Följande Java Programmet demonstrerar Select-klassen på både en enkelvals- och en flervals-rullgardinsmeny.

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

Markera objekt i ett multipelt SELECT-element

Ocuco-landskapet selectByVisibleText() Metoden fungerar även på rullgardinsmenyer med flera val. Använd till exempel https://jsbin.com/osebed/2 som bas URLDen visar en rullgardinsmeny som accepterar flera val samtidigt.

Markera objekt i ett element med flera markeringar

Utdraget nedan väljer de två första alternativen med hjälp av selectByVisibleText():

Markera objekt i en kod för flera element för val

Metodreferenstabell

Den här tabellen sammanfattar alla Select-class-metoder som behandlats ovan för snabb sökning.

Kommando BESKRIVNING
selectAyVisibleText() / deselectAyVisibleText() Markerar eller avmarkerar ett alternativ baserat på dess visade text.
selectAvVärde() / deselectAvVärde() Markerar eller avmarkerar ett alternativ genom att value attribut.
selectAvIndex() / deselectAvIndex() Markerar eller avmarkerar ett alternativ baserat på dess nollbaserade index.
isMultiple() Returnerar SANT om rullgardinsmenyn tillåter flera val, annars FALSKT.
avmarkera alla() Avmarkerar alla tidigare valda alternativ i en rullgardinsmeny med flera val.

För att styra listrutor, importera org.openqa.selenium.support.ui.Select paketera först, skapa sedan en Select-instans och anropa någon av metoderna ovan.

Vanliga frågor

Select-klassen är en Selenium hjälp för HTML SELECT-element. Den omsluter ett WebElement och exponerar selectByVisibleText, selectByValue, selectByIndex, isMultiple och deselectAll för ren automatisering av nedrullningsbara menyer.

Föredra selectByValue när attributet value är stabilt, eftersom etiketter ofta ändras vid lokalisering. Använd selectByVisibleText när texten är auktoritativ och undvik selectByIndex när alternativordningen kan ändras.

Select-klassen fungerar bara på riktiga HTML SELECT-taggar. Om WebElement är en div-, ul- eller anpassad widget som är utformad för att se ut som en rullgardinsmeny måste du klicka på alternativ via WebElement.click() eller Actions API istället.

Anropa getFirstSelectedOption() på Select-instansen och bekräfta dess getText()-värde. För flervalslistor, iterera getAllSelectedOptions() och jämför den returnerade listan med de förväntade valen.

Ja. Använd isMultiple() för att bekräfta att rullgardinsmenyn tillåter flera värden, anropa sedan selectByVisibleText flera gånger eller deselectAll() för att återställa. Rullgardinsmenyer med flerval kräver HTML SELECT-elementet för att deklarera multiple-attributet.

Använd WebDriverWait med ExpectedConditions.numberOfElementsToBeMoreThan på alternativsökaren. Detta säkerställer att asynkront ifyllda rullgardinsmenyer är klara innan Select-klassen instansieras och valfri urvalsmetod anropas.

AI-drivna självläkande lokaliseringsverktyg upptäcker när ett SELECT-elements ID, namn eller XPath har ändrats och växlar till ett fungerande alternativ. De minskar risken för ojämna dropdown-fel i pipelines efter omdesign av användargränssnittet.

Ja. AI-kodningsassistenter omvandlar en förfrågan på vanlig engelska, till exempel "välj land ANTARKTIKA på registreringssidan", till en komplett Select-instans med rätt locator, selectByVisibleText-anrop och en verifieringspåstående.

Sammanfatta detta inlägg med: