Comment sélectionner une valeur dans la liste déroulante dans Selenium

⚡ Résumé intelligent

Sélectionnez une valeur dans la liste déroulante. Selenium Utilise la classe Select dédiée pour contrôler les éléments HTML SELECT. Cette classe expose les méthodes selectByVisibleText, selectByValue et selectByIndex qui permettent de sélectionner précisément les options et prennent en charge les listes déroulantes à sélection multiple.

  • 📦 Importer le paquet : Importez org.openqa.selenium.support.ui.Select et enveloppez l'élément WebElement avant d'appeler une méthode de sélection.
  • (I.e. Choisissez la bonne méthode : Choisissez selectByVisibleText, selectByValue ou selectByIndex selon que le texte affiché, l'attribut de valeur ou la position soit le plus stable.
  • (I.e. Gérer les listes déroulantes à sélection multiple : Utilisez isMultiple pour les détecter, et deselectAll ou deselectByVisibleText pour effacer les choix précédents.
  • Vérifiez la sélection : Appelez la fonction getFirstSelectedOption pour confirmer que le test a bien modifié l'état de la liste déroulante.
  • 🤖 Utiliser des localisateurs IA : Les localisateurs d'IA auto-réparateurs réparent les XPath de sélection d'éléments cassés après les modifications de l'interface utilisateur, conserventping Les tests de menu déroulant restent stables d'une version à l'autre.

Sélectionnez une valeur dans la liste déroulante. Selenium

Qu'est-ce que la classe Select dans Selenium?

Le Sélectionnez la classe dans Selenium est une classe d'assistance du org.openqa.selenium.support.ui package permettant à WebDriver d'interagir avec HTML <select> Il expose des méthodes permettant de sélectionner et de désélectionner des options par texte visible, valeur ou index, et de détecter si une liste déroulante accepte plusieurs sélections.

Parce que Select est un habitué Java classe, vous créez une instance avec la new mot-clé et transmettez l'élément Web qui pointe vers le <select> balise sur la page.

Comment sélectionner la liste déroulante dans Selenium

Avant de gérer une liste déroulante dans Selenium, deux étapes sont nécessaires :

  1. Importer le package org.openqa.selenium.support.ui.Select.
  2. Instanciez la liste déroulante comme un Select objet dans Selenium Pilote Web.

Par exemple, ouvrez le Mercury Page d'inscription des visites (https://demo.guru99.com/test/newtours/register.php) et repérez le menu déroulant « Pays ».

Sélectionnez la liste déroulante dans Selenium

Étape 1) Importer le package Select.

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

Étape 2) Déclarez l'élément déroulant comme instance de la classe Select. Dans l'exemple ci-dessous, l'instance est nommée drpCountry.

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

Étape 3) Commencez à contrôler le menu déroulant. Utilisez n'importe quelle méthode de sélection pour choisir une option. L'exemple ci-dessous sélectionne « ANTARCTIQUE » :

drpCountry.selectByVisibleText("ANTARCTICA");

Sélectionnez les méthodes dans Selenium

La classe Select propose plusieurs méthodes pour interagir avec les options des listes déroulantes. Les cinq plus courantes sont décrites ci-dessous.

1) selectByVisibleText() et deselectByVisibleText()

  • Sélectionne ou désélectionne l'option dont le texte affiché correspond au paramètre.
  • Paramètre: le texte exact affiché pour cette option.

Exemple :

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() et deselectByValue()

  • Sélectionne ou désélectionne l'option dont value L'attribut correspond au paramètre.
  • Notez que le texte affiché et le value Les attributs sont souvent différents, comme indiqué ci-dessous.
  • Paramètre: l'option value attribuer.

sélectionnerParValeur et désélectionnerParValeur

Exemple :

drpCountry.selectByValue("234");

3) selectByIndex() et deselectByIndex()

  • Permet de sélectionner ou de désélectionner l'option à l'index indiqué. Les index commencent à zéro.
  • Paramètre: l'indice entier de l'option.

Exemple :

drpCountry.selectByIndex(0);

4) estMultiple()

  • Retours de produits TRUE si la liste déroulante autorise plusieurs sélections simultanées, sinon FALSE.
  • Paramètre: aucun.

Exemple :

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

5) désélectionnerTout()

  • Efface toutes les options sélectionnées. Valable uniquement pour les listes déroulantes à sélection multiple.
  • Paramètre: aucun.

Exemple :

drpCountry.deselectAll();

Code de méthodes de sélection dans Selenium

Java Ce programme illustre l'utilisation de la classe Select dans une liste déroulante à sélection unique et dans une liste déroulante à sélection multiple.

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

Sélection d'éléments dans un élément SELECT multiple

Le selectByVisibleText() Cette méthode fonctionne également avec les listes déroulantes à sélection multiple. Par exemple, utilisez https://jsbin.com/osebed/2 que la base URLElle affiche une liste déroulante qui accepte plusieurs sélections simultanément.

Sélection d'éléments dans un élément de sélection multiple

L'extrait ci-dessous sélectionne les deux premières options en utilisant selectByVisibleText():

Code de sélection d'éléments dans un champ de sélection multiple

Tableau de référence de la méthode

Ce tableau récapitule toutes les méthodes de la classe Select présentées ci-dessus pour une consultation rapide.

Command Description
sélectionnerParTexteVisible() / désélectionnerParTexteVisible() Permet de sélectionner ou de désélectionner une option en fonction de son texte affiché.
sélectionnerParValeur() / désélectionnerParValeur() Sélectionne ou désélectionne une option par son value attribuer.
sélectionnerParIndex() / désélectionnerParIndex() Sélectionne ou désélectionne une option en fonction de son index (à partir de zéro).
estMultiple() Renvoie VRAI si la liste déroulante autorise plusieurs sélections, sinon FAUX.
tout déselectionner() Désélectionne toutes les options précédemment sélectionnées dans une liste déroulante à sélection multiple.

Pour contrôler les listes déroulantes, importez le org.openqa.selenium.support.ui.Select Commencez par créer un package, puis créez une instance Select et appelez l'une des méthodes ci-dessus.

FAQ

La classe Select est une Selenium Outil d'assistance pour les éléments HTML SELECT. Il encapsule un WebElement et expose les méthodes selectByVisibleText, selectByValue, selectByIndex, isMultiple et deselectAll pour une automatisation simplifiée des listes déroulantes.

Privilégiez selectByValue lorsque l'attribut de valeur est stable, car les libellés changent souvent pour des raisons de localisation. Utilisez selectByVisibleText lorsque le texte fait autorité et évitez selectByIndex lorsque l'ordre des options peut varier.

La classe Select ne fonctionne qu'avec les balises HTML SELECT réelles. Si l'élément WebElement est une balise div, ul ou un widget personnalisé stylisé comme une liste déroulante, vous devez cliquer sur les options via WebElement.click() ou l'API Actions.

Appelez la méthode `getFirstSelectedOption()` sur l'instance `Select` et vérifiez sa valeur `getText()`. Pour les listes déroulantes à sélection multiple, itérez sur `getAllSelectedOptions()` et comparez la liste retournée avec les sélections attendues.

Oui. Utilisez `isMultiple()` pour vérifier que la liste déroulante accepte plusieurs valeurs, puis appelez `selectByVisibleText` plusieurs fois ou `deselectAll()` pour réinitialiser. Les listes déroulantes à sélection multiple nécessitent que l'élément HTML `SELECT` déclare l'attribut `multiple`.

Utilisez WebDriverWait avec ExpectedConditions.numberOfElementsToBeMoreThan sur le localisateur d'options. Cela garantit que les listes déroulantes remplies de manière asynchrone sont prêtes avant l'instanciation de la classe Select et l'appel de toute méthode de sélection.

Les localisateurs autoréparateurs basés sur l'IA détectent les modifications de l'identifiant, du nom ou du XPath d'un élément SELECT et basculent vers une alternative fonctionnelle. Ils réduisent les dysfonctionnements des listes déroulantes dans les pipelines après les refontes d'interface utilisateur.

Oui. Les assistants de codage IA transforment une requête en langage clair telle que « sélectionnez le pays ANTARCTIQUE sur la page d'inscription » en une instance Select complète avec le bon localisateur, l'appel selectByVisibleText et une assertion de vérification.

Résumez cet article avec :