Arvon valitseminen pudotusvalikosta Selenium

⚡ Älykäs yhteenveto

Valitse arvo alasvetovalikosta Selenium käyttää erillistä Select-luokkaa HTML:n SELECT-elementtien hallintaan. Luokka tarjoaa selectByVisibleText-, selectByValue- ja selectByIndex-metodit, jotka valitsevat asetuksia tarkasti ja tukevat monivalintavalikoita.

  • 📦 Tuo paketti: Tuo org.openqa.selenium.support.ui.Select-elementtiin ja rivitä se WebElement-elementin joukkoon ennen minkään valintametodin kutsumista.
  • 🎯 Valitse oikea menetelmä: Valitse selectByVisibleText, selectByValue tai selectByIndex sen perusteella, onko vakain näyttöteksti, arvoattribuutti vai sijainti.
  • 🔁 Käsittele monivalintavalikoita: Käytä isMultiple-metodia niiden havaitsemiseen ja deselectAll- tai deselectByVisibleText-metodin avulla voit tyhjentää aiemmat valinnat.
  • Vahvista valinta: Kutsu getFirstSelectedOption-funktiota varmistaaksesi, että testi todella muutti alasvetovalikon tilaa.
  • 🤖 Käytä tekoälypaikantimia: Itsekorjaavat tekoälypaikantimet korjaavat rikkinäiset valintaelementtien XPath-polut käyttöliittymämuutosten jälkeen, keeping alasvetovalikon testit ovat vakaita eri julkaisuissa.

Valitse arvo alasvetovalikosta Selenium

Mikä on Select-luokka? Selenium?

Valitse luokka Selenium on auttajaluokka org.openqa.selenium.support.ui paketti, jonka avulla WebDriver on vuorovaikutuksessa HTML:n kanssa <select> elementtejä. Se paljastaa menetelmiä vaihtoehtojen valitsemiseksi ja valinnan poistamiseksi näkyvän tekstin, arvon tai indeksin perusteella ja sen havaitsemiseksi, hyväksyykö avattava valikko useita valintoja.

Koska Select on vakiokasvo Java luokan, luot instanssin, jossa on new avainsana ja välitä WebElement, joka osoittaa <select> -tunniste sivulla.

Kuinka valita avattava valikko Selenium

Ennen pudotusvalikon käsittelyä Selenium, vaaditaan kaksi vaihetta:

  1. Tuo paketti org.openqa.selenium.support.ui.Select.
  2. Luo pudotusvalikosta instanssi Select esine sisään Selenium WebDriver.

Avaa esimerkiksi Mercury Toursin ilmoittautumissivu (https://demo.guru99.com/test/newtours/register.php) ja etsi avattava ”Maa”-valikko.

Valitse pudotusvalikosta Selenium

Vaihe 1) Tuo Select-paketti.

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

Vaihe 2) Ilmoita avattava elementti Select-luokan esiintymäksi. Alla olevassa esimerkissä instanssi on nimetty drpCountry.

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

Vaihe 3) Aloita pudotusvalikon hallinta. Valitse vaihtoehto millä tahansa Select-menetelmällä. Alla olevassa esimerkissä valitaan ”ANTARCTICA”:

drpCountry.selectByVisibleText("ANTARCTICA");

Valitse Methods in Selenium

Select-luokka tarjoaa useita metodeja alasvetovalikoiden kanssa toimimiseen. Viisi yleisintä on kuvattu alla.

1) valitseByVisibleText() ja poista valintaByVisibleText()-funktioilta

  • Valitsee tai poistaa valinnan vaihtoehdosta, jonka näytettävä teksti vastaa parametria.
  • Parametri: vaihtoehdolle näytettävä tarkka teksti.

Esimerkiksi:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() ja deselectByValue()

  • Valitsee tai poistaa valinnan vaihtoehdosta, jonka value attribuutti vastaa parametria.
  • Huomaa, että näytetty teksti ja value attribuutit ovat usein erilaisia, kuten alla on esitetty.
  • Parametri: vaihtoehdon value määrite.

valitseArvonBy ja poistaArvonBy-valinta

Esimerkiksi:

drpCountry.selectByValue("234");

3) selectByIndex() ja deselectByIndex()

  • Valitsee tai poistaa valinnan annetun indeksin kohdalla olevasta vaihtoehdosta. Indeksit ovat nollapohjaisia.
  • Parametri: vaihtoehdon kokonaislukuindeksi.

Esimerkiksi:

drpCountry.selectByIndex(0);

4) onMoninkertainen()

  • Palautukset TRUE jos alasvetovalikko sallii useita valintoja samanaikaisesti, muuten FALSE.
  • Parametri: ei mitään.

Esimerkiksi:

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

5) poistaKaikkienValinta()

  • Tyhjentää kaikki valitut vaihtoehdot. Voimassa vain monivalintavalikoissa.
  • Parametri: ei mitään.

Esimerkiksi:

drpCountry.deselectAll();

Täydellinen Code Valitse-menetelmistä kohdassa Selenium

Seuraavat Java ohjelma esittelee Select-luokan sekä yhden että useamman valinnan alasvetovalikoissa.

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

Kohteiden valitseminen Multiple SELECT -elementissä

selectByVisibleText() menetelmä toimii myös monivalintavalikoissa. Käytä esimerkkinä https://jsbin.com/osebed/2 kuin pohja URLSe näyttää alasvetovalikon, joka hyväksyy useita valintoja kerralla.

Kohteiden valitseminen monivalintaelementissä

Alla oleva koodinpätkä valitsee kaksi ensimmäistä vaihtoehtoa käyttämällä selectByVisibleText():

Kohteiden valitseminen monivalintaelementtikoodissa

Menetelmäviitetaulukko

Tämä taulukko tiivistää kaikki yllä käsitellyt Select-luokan metodit nopeaa hakua varten.

Komento Tuotetiedot
valitseVisibleText() / poistaVisibleText()-valinta Valitsee tai poistaa valinnan vaihtoehdosta sen näytetyn tekstin perusteella.
valitseArvonBy() / poistaArvonBy-valinta() Valitsee tai poistaa valinnan vaihtoehdosta sen perusteella value määrite.
selectByIndex() / deselectByIndex() Valitsee tai poistaa valinnan vaihtoehdosta sen nollapohjaisen indeksin perusteella.
isMultiple() Palauttaa arvon TRUE, jos avattava valikko sallii useita valintoja, muuten FALSE.
poista kaikki valinta() Poistaa kaikkien aiemmin valittujen vaihtoehtojen valinnan monivalintavalikosta.

Voit hallita alasvetovalikoita tuomalla org.openqa.selenium.support.ui.Select paketti ensin, luo sitten Select-instanssi ja kutsu mitä tahansa yllä olevista metodeista.

UKK

Select-luokka on Selenium HTML SELECT -elementtien apuohjelma. Se käärii WebElementin ja paljastaa selectByVisibleText-, selectByValue-, selectByIndex-, isMultiple- ja deselectAll-elementit selkeää alasvetovalikoiden automatisointia varten.

Suosi selectByValue-attribuuttia, kun value-attribuutti on vakaa, koska otsikot usein muuttuvat lokalisoinnin mukaan. Käytä selectByVisibleText-attribuuttia, kun teksti on määräävä, ja vältä selectByIndex-attribuuttia, kun vaihtoehtojen järjestys voi muuttua.

Select-luokka toimii vain oikeiden HTML-SELECT-tagejen kanssa. Jos WebElement on div-, ul- tai mukautettu widget, joka on tyyliltään avattava valikko, sinun on napsautettava asetuksia WebElement.click():n tai Actions API:n kautta.

Kutsu getFirstSelectedOption()-funktiota Select-instanssille ja aseta sen getText()-arvo. Monivalintavalikoissa iteroi getAllSelectedOptions()-funktiota ja vertaa palautettua luetteloa odotettuihin valintoihin.

Kyllä. Käytä isMultiple()-funktiota varmistaaksesi, että alasvetovalikko sallii useita arvoja, ja kutsu sitten selectByVisibleText-funktiota useita kertoja tai deselectAll()-funktiota nollataksesi oletusasetukset. Monivalinta-alasvetovalikot vaativat HTML-selaimen SELECT-elementin multiple-attribuutin määrittämiseksi.

Käytä WebDriverWait-metodia ExpectedConditions.numberOfElementsToBeMoreThan-metodin kanssa option locatorissa. Tämä varmistaa, että asynkronisesti täytetyt alasvetovalikot ovat valmiita ennen Select-luokan luomista ja minkään valintametodin kutsumista.

Tekoälyllä toimivat itsekorjautuvat paikantimet havaitsevat, kun SELECT-elementin tunnus, nimi tai XPath on muuttunut, ja vaihtavat toimivaan vaihtoehtoon. Ne vähentävät epätasaisten alasvetovalikoiden virheitä käyttöliittymän uudelleensuunnittelun jälkeen.

Kyllä. Tekoälykoodausavustajat muuttavat selkokielisen pyynnön, kuten ”select country ANTARCTICA on the rekister page”, täydelliseksi Select-instanssiksi, jossa on oikea paikannus, selectByVisibleText-kutsu ja vahvistusväittämä.

Tiivistä tämä viesti seuraavasti: