Hvordan velge verdi fra rullegardinmenyen Selenium

โšก Smart oppsummering

Velg verdi fra rullegardinmenyen i Selenium bruker den dedikerte Select-klassen til รฅ kontrollere HTML SELECT-elementer. Klassen eksponerer selectByVisibleText-, selectByValue- og selectByIndex-metoder som velger alternativer presist og stรธtter rullegardinmenyer for flervalg.

  • ๐Ÿ“ฆ Importer pakken: Hent inn org.openqa.selenium.support.ui.Select og pakk inn WebElementet fรธr du kaller noen utvalgsmetode.
  • ๐ŸŽฏ Velg riktig metode: Velg selectByVisibleText, selectByValue eller selectByIndex basert pรฅ om visningstekst, verdiattributt eller posisjon er mest stabil.
  • ๐Ÿ” Hรฅndter rullegardinmenyer med flervalg: Bruk isMultiple for รฅ oppdage dem, og deselectAll eller deselectByVisibleText for รฅ fjerne tidligere valg.
  • โœ… Bekreft valget: Kall getFirstSelectedOption for รฅ bekrefte at testen faktisk endret rullegardinmenyens tilstand.
  • ๐Ÿค– Bruk AI-lokaliseringsverktรธy: Selvreparerende AI-lokaliseringsverktรธy reparerer รธdelagte XPath-er for select-elementer etter endringer i brukergrensesnittet, keeping Rullegardintestene er stabile pรฅ tvers av utgivelser.

Velg verdi fra rullegardinmenyen i Selenium

Hva er Select-klassen i Selenium?

Ocuco Velg klasse i Selenium er en hjelpeklasse fra org.openqa.selenium.support.ui pakke som lar WebDriver samhandle med HTML <select> elementer. Den eksponerer metoder for รฅ velge og fjerne valg av alternativer etter synlig tekst, verdi eller indeks, og for รฅ oppdage om en rullegardinmeny godtar flere valg.

Fordi Select er en gjenganger Java klasse, oppretter du en instans med new nรธkkelordet og send WebElementet som peker til <select> tag pรฅ siden.

Hvordan velge dropdown i Selenium

Fรธr du hรฅndterer en rullegardinmeny i Selenium, to trinn er nรธdvendige:

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

Som et eksempel, รฅpne Mercury Registreringsside for turer (https://demo.guru99.com/test/newtours/register.php) og finn rullegardinmenyen ยซLandยป.

Velg rullegardinmenyen Selenium

Trinn 1) Importer Select-pakken.

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

Trinn 2) Erklรฆr rullegardinelementet som en forekomst av klassen Select. I eksemplet nedenfor er instansen navngitt drpCountry.

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

Trinn 3) Begynn รฅ kontrollere rullegardinmenyen. Bruk en hvilken som helst Select-metode for รฅ velge et alternativ. Eksemplet nedenfor velger ยซANTARKTISยป:

drpCountry.selectByVisibleText("ANTARCTICA");

Velg Metoder i Selenium

Select-klassen tilbyr flere metoder for รฅ samhandle med rullegardinalternativer. De fem vanligste er beskrevet nedenfor.

1) selectAyVisibleText() og deselectAyVisibleText()

  • Merker eller fjerner merkingen for alternativet der den viste teksten samsvarer med parameteren.
  • Parameter: den nรธyaktige teksten som vises for alternativet.

Eksempel:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() og deselectByValue()

  • Merker eller fjerner merkingen for alternativet hvis value attributtet samsvarer med parameteren.
  • Merk at den viste teksten og value Attributtet er ofte forskjellige, som vist nedenfor.
  • Parameter: alternativets value attributt.

velgEtterVerdi og fjern valgEtterVerdi

Eksempel:

drpCountry.selectByValue("234");

3) selectByIndex() og deselectByIndex()

  • Merker eller fjerner merkingen av alternativet ved den gitte indeksen. Indekser er nullbaserte.
  • Parameter: heltallsindeksen til alternativet.

Eksempel:

drpCountry.selectByIndex(0);

4) erMultiple()

  • Returer TRUE hvis rullegardinmenyen tillater flere valg samtidig, ellers FALSE.
  • Parameter: ingen.

Eksempel:

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

5) opphev valget av alle()

  • Fjerner alle valgte alternativer. Gjelder kun pรฅ rullegardinmenyer med flervalg.
  • Parameter: ingen.

Eksempel:

drpCountry.deselectAll();

Komplett Code av utvalgte metoder i Selenium

Fรธlgende Java Programmet demonstrerer Select-klassen pรฅ bรฅde en rullegardinmeny med enkeltvalg og en rullegardinmeny 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);
    }
}

Velge elementer i et flertalls SELECT-element

Ocuco selectByVisibleText() Metoden fungerer ogsรฅ pรฅ rullegardinmenyer med flervalg. Bruk for eksempel https://jsbin.com/osebed/2 som base URLDen viser en rullegardinmeny som godtar flere valg samtidig.

Velge elementer i et flervalgselement

Kodeutdraget nedenfor velger de to fรธrste alternativene ved hjelp av selectByVisibleText():

Velge elementer i en kode for flervalgselementer

Metodereferansetabell

Denne tabellen oppsummerer alle Select-klasse-metodene som er dekket ovenfor, for rask oppslag.

Kommando Tekniske beskrivelser
velgMedSynligTekst() / develgMedSynligTekst() Merker eller opphever merkingen av et alternativ basert pรฅ den viste teksten.
velgEtterVerdi() / develgEtterVerdi() Merker eller fjerner merkingen av et alternativ etter dets value attributt.
velgByIndex() / develgByIndex() Merker eller fjerner merkingen av et alternativ basert pรฅ dets nullbaserte indeks.
isMultiple() Returnerer SANN hvis rullegardinmenyen tillater flere valg, ellers USANN.
deselectAll() Opphever valget av alle tidligere valgte alternativer i en rullegardinmeny med flere valg.

For รฅ kontrollere rullegardinmenyer, importer org.openqa.selenium.support.ui.Select pakke fรธrst, deretter opprett en Select-instans og kall en av metodene ovenfor.

Spรธrsmรฅl og svar

Select-klassen er en Selenium hjelper for HTML SELECT-elementer. Den pakker inn et WebElement og eksponerer selectByVisibleText, selectByValue, selectByIndex, isMultiple og deselectAll for ren automatisering av rullegardinmenyene.

Foretrekk selectByValue nรฅr value-attributtet er stabilt, fordi etiketter ofte endres for lokalisering. Bruk selectByVisibleText nรฅr teksten er autoritativ, og unngรฅ selectByIndex nรฅr rekkefรธlgen pรฅ alternativer kan endres.

Select-klassen fungerer bare pรฅ ekte HTML SELECT-tagger. Hvis WebElement er en div-, ul- eller tilpasset widget som er utformet til รฅ se ut som en rullegardinmeny, mรฅ du klikke pรฅ alternativer via WebElement.click() eller Actions API i stedet.

Kall getFirstSelectedOption() pรฅ Select-instansen og angi getText()-verdien. For rullegardinmenyer med flere valg, iterer getAllSelectedOptions() og sammenlign den returnerte listen med de forventede valgene.

Ja. Bruk isMultiple() for รฅ bekrefte at rullegardinmenyen tillater flere verdier, og kall deretter selectByVisibleText flere ganger eller deselectAll() for รฅ tilbakestille. Rullegardinmenyene med flervalg krever at HTML SELECT-elementet deklarerer multiple-attributtet.

Bruk WebDriverWait med ExpectedConditions.numberOfElementsToBeMoreThan pรฅ alternativsรธkeren. Dette sikrer at asynkront utfylte rullegardinmenyer er klare fรธr Select-klassen instansieres og en hvilken som helst utvalgsmetode kalles.

AI-drevne selvreparerende lokaliseringsverktรธy oppdager nรฅr et SELECT-elements ID, navn eller XPath har endret seg, og bytter til et fungerende alternativ. De reduserer ustabile rullegardinfeil i pipelines etter redesign av brukergrensesnittet.

Ja. AI-kodingsassistenter gjรธr en forespรธrsel pรฅ vanlig engelsk, som for eksempel ยซvelg land ANTARKTIKK pรฅ registreringssidenยป, om til en komplett Select-instans med riktig locator, selectByVisibleText-kall og en bekreftelsespรฅstand.

Oppsummer dette innlegget med: