Come selezionare il valore dal menu a discesa in Selenium

โšก Riepilogo intelligente

Seleziona il valore dal menu a tendina in Selenium Utilizza la classe Select dedicata per controllare gli elementi SELECT HTML. La classe espone i metodi selectByVisibleText, selectByValue e selectByIndex che selezionano le opzioni con precisione e supportano i menu a tendina a selezione multipla.

  • ๐Ÿ“ฆ Importa il pacchetto: Aggiungi org.openqa.selenium.support.ui.Select e avvolgi l'oggetto WebElement prima di chiamare qualsiasi metodo di selezione.
  • ๐ŸŽฏ Scegli il metodo giusto: Scegli selectByVisibleText, selectByValue o selectByIndex a seconda di quale metodo, tra testo visualizzato, attributo valore o posizione, sia piรน stabile.
  • ๐Ÿ” Gestire i menu a tendina a selezione multipla: Utilizza isMultiple per rilevarli e deselectAll o deselectByVisibleText per cancellare le scelte precedenti.
  • โœ… Verificare la selezione: Chiama getFirstSelectedOption per confermare che il test abbia effettivamente modificato lo stato del menu a tendina.
  • ๐Ÿค– Utilizza i localizzatori basati sull'intelligenza artificiale: I localizzatori AI auto-riparanti riparano gli XPath di selezione degli elementi danneggiati dopo le modifiche all'interfaccia utente, mantenendoping I test a tendina risultano stabili tra le diverse versioni.

Seleziona il valore dal menu a tendina in Selenium

Che cos'รจ la classe Select in Selenium?

Migliori Seleziona la classe in Selenium รจ una classe di supporto di org.openqa.selenium.support.ui pacchetto che consente a WebDriver di interagire con HTML <select> elementi. Espone metodi per selezionare e deselezionare le opzioni in base al testo visibile, al valore o all'indice, e per rilevare se un menu a tendina accetta selezioni multiple.

Perchรฉ Select รจ un normale Java classe, crei un'istanza con la new parola chiave e passa il WebElement che punta al <select> tag sulla pagina.

Come selezionare il menu a discesa in Selenium

Prima di gestire un menu a tendina in Selenium, sono necessari due passaggi:

  1. Importa il pacchetto org.openqa.selenium.support.ui.Select.
  2. Istanzia il menu a tendina come un Select oggetto in Selenium WebDriver.

Ad esempio, apri il Mercury Pagina di registrazione dei tour (https://demo.guru99.com/test/newtours/register.php) e individuare il menu a tendina โ€œPaeseโ€.

Seleziona A discesa in Selenium

Passaggio 1) Importare il pacchetto Select.

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

Passaggio 2) Dichiarare l'elemento a discesa come istanza della classe Select. Nell'esempio seguente, l'istanza รจ denominata drpCountry.

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

Passaggio 3) Inizia a controllare il menu a tendina. Utilizza un qualsiasi metodo Select per scegliere un'opzione. L'esempio seguente seleziona "ANTARTIDE":

drpCountry.selectByVisibleText("ANTARCTICA");

Seleziona Metodi in Selenium

La classe Select offre diversi metodi per interagire con le opzioni dei menu a tendina. I cinque piรน comuni sono descritti di seguito.

1) selectByVisibleText() e deselectByVisibleText()

  • Seleziona o deseleziona l'opzione il cui testo visualizzato corrisponde al parametro.
  • Parametro: il testo esatto visualizzato per l'opzione.

Esempio:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() e deselectByValue()

  • Seleziona o deseleziona l'opzione il cui value l'attributo corrisponde al parametro.
  • Nota che il testo visualizzato e il value Gli attributi sono spesso diversi, come mostrato di seguito.
  • Parametro: l'opzione value attributo.

selectByValue e deselectByValue

Esempio:

drpCountry.selectByValue("234");

3) selectByIndex() e deselectByIndex()

  • Seleziona o deseleziona l'opzione all'indice specificato. Gli indici partono da zero.
  • Parametro: l'indice intero dell'opzione.

Esempio:

drpCountry.selectByIndex(0);

4) isMultiple()

  • Resi TRUE se il menu a tendina consente selezioni multiple contemporaneamente, altrimenti FALSE.
  • Parametro: nessuna.

Esempio:

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

5) deselezionaTutto()

  • Deseleziona tutte le opzioni selezionate. Valido solo per i menu a tendina a selezione multipla.
  • Parametro: nessuna.

Esempio:

drpCountry.deselectAll();

Completato Code di metodi selezionati in Selenium

Le seguenti Java Il programma dimostra l'utilizzo della classe Select sia per un menu a tendina a selezione singola che per un menu a tendina a selezione multipla.

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

Selezione di elementi in un elemento SELECT multiplo

Migliori selectByVisibleText() Il metodo funziona anche sui menu a tendina a selezione multipla. Ad esempio, utilizzare https://jsbin.com/osebed/2 come base URL. Presenta un menu a tendina che accetta selezioni multiple contemporaneamente.

Selezione di elementi in un elemento di selezione multipla

Il frammento seguente seleziona le prime due opzioni utilizzando selectByVisibleText():

Selezione di elementi in un elemento di selezione multipla

Tabella di riferimento del metodo

Questa tabella riassume tutti i metodi della classe Select descritti in precedenza, per una consultazione rapida.

Comando Descrizione
selectByVisibleText() / deselectByVisibleText() Consente di selezionare o deselezionare un'opzione in base al testo visualizzato.
selectByValue() / deselectByValue() Seleziona o deseleziona un'opzione tramite il suo value attributo.
selectByIndex() / deselectByIndex() Seleziona o deseleziona un'opzione tramite il suo indice a base zero.
รจMultiplo() Restituisce TRUE se il menu a tendina consente selezioni multiple, altrimenti FALSE.
deselezionare tutto() Deseleziona tutte le opzioni precedentemente selezionate in un menu a tendina a selezione multipla.

Per controllare le caselle a discesa, importare il org.openqa.selenium.support.ui.Select prima di tutto, crea un pacchetto, poi crea un'istanza di Select e chiama uno qualsiasi dei metodi sopra descritti.

DOMANDE FREQUENTI

La classe Select รจ una Selenium Funzione di supporto per gli elementi SELECT di HTML. Incapsula un WebElement ed espone i metodi selectByVisibleText, selectByValue, selectByIndex, isMultiple e deselectAll per un'automazione pulita dei menu a tendina.

รˆ preferibile utilizzare selectByValue quando l'attributo valore รจ stabile, poichรฉ le etichette cambiano spesso per la localizzazione. Utilizzare selectByVisibleText quando il testo รจ autorevole ed evitare selectByIndex quando l'ordine delle opzioni potrebbe cambiare.

La classe Select funziona solo con i tag SELECT HTML reali. Se l'elemento WebElement รจ un div, un ul o un widget personalizzato con uno stile che lo fa apparire come un menu a tendina, รจ necessario fare clic sulle opzioni tramite WebElement.click() o l'API Actions.

Chiama il metodo getFirstSelectedOption() sull'istanza di Select e verifica il suo valore ottenuto tramite il metodo getText(). Per i menu a tendina a selezione multipla, itera il metodo getAllSelectedOptions() e confronta l'elenco restituito con le selezioni previste.

Sรฌ. Usa `isMultiple()` per verificare che il menu a tendina accetti piรน valori, quindi chiama `selectByVisibleText` piรน volte o `deselectAll()` per reimpostarlo. I menu a tendina con selezione multipla richiedono che l'elemento HTML `SELECT` dichiari l'attributo `multiple`.

Utilizzare WebDriverWait con ExpectedConditions.numberOfElementsToBeMoreThan sul localizzatore di opzioni. Ciรฒ garantisce che i menu a tendina popolati in modo asincrono siano pronti prima di istanziare la classe Select e chiamare qualsiasi metodo di selezione.

I localizzatori auto-riparanti basati sull'IA rilevano quando l'ID, il nome o l'XPath di un elemento SELECT sono cambiati e passano a un'alternativa funzionante. Riducono i malfunzionamenti intermittenti dei menu a tendina nelle pipeline dopo la riprogettazione dell'interfaccia utente.

Sรฌ. Gli assistenti di programmazione basati sull'IA trasformano una richiesta in linguaggio naturale come "seleziona il paese ANTARTIDE nella pagina di registrazione" in un'istanza completa di Select con il localizzatore corretto, la chiamata a selectByVisibleText e un'asserzione di verifica.

Riassumi questo post con: