Cum să selectați valoarea din meniul drop-down în Selenium

⚡ Rezumat inteligent

Selectați valoarea din meniul derulant din Selenium utilizează clasa Select dedicată pentru a controla elementele HTML SELECT. Clasa expune metodele selectByVisibleText, selectByValue și selectByIndex care selectează opțiunile cu precizie și acceptă liste derulante cu selecție multiplă.

  • 📦 Import pachetul: Aduceți org.openqa.selenium.support.ui.Select și încadrați WebElement înainte de a apela orice metodă de selecție.
  • 🎯 Alege metoda potrivită: Alegeți selectByVisibleText, selectByValue sau selectByIndex în funcție de stabilitatea maximă a textului afișat, a atributului valorii sau a poziției.
  • 🔁 Gestionați listele derulante cu selecție multiplă: Folosește isMultiple pentru a le detecta și deselectAll sau deselectByVisibleText pentru a șterge alegerile anterioare.
  • ✅ Verificați selecția: Apelați getFirstSelectedOption pentru a confirma că testul a modificat de fapt starea meniului derulant.
  • 🤖 Folosește localizatoare AI: Localizatorii AI cu auto-reparare repară XPath-urile defecte ale elementelor de selecție după modificările interfeței utilizator, keeping testele derulante sunt stabile în toate versiunile.

Selectați valoarea din meniul derulant din Selenium

Ce este clasa Select în Selenium?

Selectați clasa în Selenium este o clasă de ajutor din org.openqa.selenium.support.ui pachet care permite WebDriver să interacționeze cu HTML <select> elemente. Expune metode pentru selectarea și deselectarea opțiunilor după textul vizibil, valoare sau index și pentru detectarea dacă o listă derulantă acceptă selecții multiple.

pentru că Select este un obișnuit Java clasă, creați o instanță cu new cuvântul cheie și transmiteți WebElement-ul care indică către <select> etichetă pe pagină.

Cum să selectați meniul drop-down în Selenium

Înainte de a manipula o listă derulantă Selenium, sunt necesari doi pași:

  1. Importă pachetul org.openqa.selenium.support.ui.Select.
  2. Instanțiează meniul derulant ca Select obiect în Selenium WebDriver.

Ca exemplu, deschideți Mercury Pagina de înregistrare a tururilor (https://demo.guru99.com/test/newtours/register.php) și localizați meniul derulant „Țară”.

Selectați Meniu derulant în Selenium

Pasul 1) Importați pachetul Select.

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

Pasul 2) Declarați elementul drop-down ca o instanță a clasei Select. În exemplul de mai jos, instanța este denumită drpCountry.

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

Pasul 3) Începeți să controlați meniul derulant. Folosește orice metodă Select pentru a alege o opțiune. Exemplul de mai jos selectează „ANTARCTICA”:

drpCountry.selectByVisibleText("ANTARCTICA");

Selectați Metode în Selenium

Clasa Select oferă mai multe metode de interacțiune cu opțiunile din meniul derulant. Cele cinci cele mai comune sunt descrise mai jos.

1) selectByVisibleText() și deselectByVisibleText()

  • Selectează sau deselectează opțiunea al cărei text afișat corespunde parametrului.
  • Parametru: textul exact afișat pentru opțiune.

Exemplu:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() și deselectByValue()

  • Selectează sau deselectează opțiunea a cărei value Atributul se potrivește cu parametrul.
  • Rețineți că textul afișat și value Atributele sunt adesea diferite, așa cum se arată mai jos.
  • Parametru: opțiunea value atribut.

selectByValue și deselectByValue

Exemplu:

drpCountry.selectByValue("234");

3) selectByIndex() și deselectByIndex()

  • Selectează sau deselectează opțiunea de la indexul dat. Indexurile au bază zero.
  • Parametru: indicele întreg al opțiunii.

Exemplu:

drpCountry.selectByIndex(0);

4) esteMultiple()

  • Returnări TRUE dacă meniul derulant permite mai multe selecții simultan, altfel FALSE.
  • Parametru: nici unul.

Exemplu:

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

5) deselectAll()

  • Șterge toate opțiunile selectate. Valabil doar pentru listele derulante cu selecție multiplă.
  • Parametru: nici unul.

Exemplu:

drpCountry.deselectAll();

Completa Code de Selectare a Metodelor în Selenium

Următoarele Java Programul demonstrează clasa Select atât într-o meniu derulant cu selecție unică, cât și într-una cu selecție multiplă.

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

Selectarea elementelor într-un element SELECT multiplu

selectByVisibleText() Metoda funcționează și cu liste derulante cu selecție multiplă. De exemplu, utilizați https://jsbin.com/osebed/2 ca bază URLExpune o listă derulantă care acceptă mai multe selecții simultan.

Selectarea elementelor într-un element de selecție multiplă

Fragmentul de mai jos selectează primele două opțiuni folosind selectByVisibleText():

Selectarea elementelor într-un cod de element cu selecție multiplă

Tabel de referință al metodei

Acest tabel rezumă fiecare metodă Select-class prezentată mai sus pentru o căutare rapidă.

Comandă Descriere
selectByVisibleText() / deselectByVisibleText() Selectează sau deselectează o opțiune în funcție de textul afișat.
selectByValue() / deselectByValue() Selectează sau deselectează o opțiune prin intermediul acesteia value atribut.
selectByIndex() / deselectByIndex() Selectează sau deselectează o opțiune după indicele său cu bază zero.
este Multiplu() Returnează TRUE dacă meniul derulant permite selecții multiple, altfel FALSE.
deselectAll() Deselectează toate opțiunile selectate anterior dintr-o listă derulantă cu selecție multiplă.

Pentru a controla casetele derulante, importați org.openqa.selenium.support.ui.Select mai întâi pachetul, apoi creați o instanță Select și apelați oricare dintre metodele de mai sus.

Întrebări frecvente

Clasa Select este o Selenium ajutor pentru elementele HTML SELECT. Încadrează un WebElement și expune selectByVisibleText, selectByValue, selectByIndex, isMultiple și deselectAll pentru o automatizare curată a meniurilor derulante.

Preferați selectByValue când atributul value este stabil, deoarece etichetele se schimbă adesea în funcție de localizare. Folosiți selectByVisibleText când textul este autoritar și evitați selectByIndex când ordinea opțiunilor se poate schimba.

Clasa Select funcționează doar cu etichete SELECT HTML reale. Dacă WebElement este un div, ul sau un widget personalizat, conceput să arate ca o listă derulantă, trebuie să faceți clic pe opțiuni prin WebElement.click() sau prin API-ul Actions.

Apelați getFirstSelectedOption() pe instanța Select și activați valoarea sa getText(). Pentru listele derulante cu selecție multiplă, iterați getAllSelectedOptions() și comparați lista returnată cu selecțiile așteptate.

Da. Folosește isMultiple() pentru a confirma că meniul derulant permite valori multiple, apoi apelează selectByVisibleText de mai multe ori sau deselectAll() pentru a reseta. Meniurile derulante cu selecție multiplă necesită elementul HTML SELECT pentru a declara atributul multiple.

Folosește WebDriverWait cu ExpectedConditions.numberOfElementsToBeMoreThan în locatorul de opțiuni. Acest lucru asigură că listele derulante populate asincron sunt gata înainte de instanțierea clasei Select și apelarea oricărei metode de selecție.

Localizatorii cu auto-reparare bazați pe inteligență artificială detectează când ID-ul, numele sau XPath-ul unui element SELECT s-au modificat și trec la o alternativă funcțională. Aceștia reduc erorile instabile ale meniurilor drop-down din conducte după reproiectarea interfeței utilizator.

Da. Asistenții de codare bazați pe inteligență artificială transformă o solicitare în limba engleză simplă, cum ar fi „selectați țara ANTARCTICA pe pagina de înregistrare” într-o instanță Select completă cu localizatorul corect, apelul selectByVisibleText și o afirmație de verificare.

Rezumați această postare cu: