Cómo seleccionar un valor del menú desplegable en Selenium

⚡ Resumen inteligente

Seleccione un valor del menú desplegable en Selenium Utiliza la clase Select, dedicada a controlar los elementos SELECT de HTML. Esta clase expone los métodos selectByVisibleText, selectByValue y selectByIndex, que permiten seleccionar opciones con precisión y admiten menús desplegables de selección múltiple.

  • 📦 Importar el paquete: Incluya org.openqa.selenium.support.ui.Select y envuelva el WebElement antes de llamar a cualquier método de selección.
  • 🎯 Elige el método correcto: Elija selectByVisibleText, selectByValue o selectByIndex según si el texto a mostrar, el atributo de valor o la posición son más estables.
  • 🔁 Gestionar menús desplegables de selección múltiple: Utilice isMultiple para detectarlos y deselectAll o deselectByVisibleText para borrar las selecciones anteriores.
  • ✅ Verifique la selección: Llama a getFirstSelectedOption para confirmar que la prueba realmente cambió el estado del menú desplegable.
  • 🤖 Utilice localizadores de IA: Los localizadores de IA autorreparables reparan los XPath de selección de elementos rotos después de los cambios en la interfaz de usuario, manteniendoping Las pruebas desplegables se mantienen estables en todas las versiones.

Seleccione un valor del menú desplegable en Selenium

¿Qué es la clase Select en Selenium?

El Seleccione la clase en Selenium es una clase auxiliar de la org.openqa.selenium.support.ui Paquete que permite a WebDriver interactuar con HTML <select> elementos. Expone métodos para seleccionar y deseleccionar opciones por texto visible, valor o índice, y para detectar si un menú desplegable acepta selecciones múltiples.

Gracias Select es un regular Java clase, creas una instancia con la new palabra clave y pasar el WebElement que apunta a la <select> etiqueta en la página.

Cómo seleccionar el menú desplegable en Selenium

Antes de manejar un menú desplegable en SeleniumSe requieren dos pasos:

  1. Importar el paquete org.openqa.selenium.support.ui.Select.
  2. Instancie el menú desplegable como un Select objeto en Selenium Controlador web.

Como ejemplo, abra el Mercury Página de registro de tours (https://demo.guru99.com/test/newtours/register.php) y localice el menú desplegable “País”.

Seleccione Menú desplegable en Selenium

Paso 1) Importar el paquete Select.

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

Paso 2) Declare el elemento desplegable como una instancia de la clase Seleccionar. En el ejemplo siguiente, la instancia se llama drpCountry.

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

Paso 3) Comience a controlar el menú desplegable. Utilice cualquier método Select para elegir una opción. El ejemplo siguiente selecciona “ANTÁRTIDA”:

drpCountry.selectByVisibleText("ANTARCTICA");

Seleccionar métodos en Selenium

La clase Select proporciona varios métodos para interactuar con las opciones desplegables. Los cinco más comunes se describen a continuación.

1) selectByVisibleText() y deselectByVisibleText()

  • Selecciona o deselecciona la opción cuyo texto mostrado coincide con el parámetro.
  • Parámetro: el texto exacto que se muestra para la opción.

Ejemplo:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() y deselectByValue()

  • Selecciona o deselecciona la opción cuya value El atributo coincide con el parámetro.
  • Tenga en cuenta que el texto mostrado y el value Los atributos suelen ser diferentes, como se muestra a continuación.
  • Parámetro: la opción value atributo.

seleccionarPorValor y deseleccionarPorValor

Ejemplo:

drpCountry.selectByValue("234");

3) selectByIndex() y deselectByIndex()

  • Selecciona o deselecciona la opción en el índice especificado. Los índices comienzan en cero.
  • Parámetro: el índice entero de la opción.

Ejemplo:

drpCountry.selectByIndex(0);

4) esMúltiple()

  • Returns TRUE si el menú desplegable permite selecciones múltiples al mismo tiempo, de lo contrario FALSE.
  • Parámetro: ninguna.

Ejemplo:

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

5) deseleccionarTodo()

  • Borra todas las opciones seleccionadas. Solo válido en menús desplegables de selección múltiple.
  • Parámetro: ninguna.

Ejemplo:

drpCountry.deselectAll();

Paquete COMPLETE Code de métodos seleccionados en Selenium

Las siguientes Java El programa muestra cómo usar la clase Select tanto en un menú desplegable de selección única como en uno de selección múltiple.

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

Selección de elementos en un elemento SELECT múltiple

El selectByVisibleText() Este método también funciona en menús desplegables de selección múltiple. Como ejemplo, utilice https://jsbin.com/osebed/2 como la base URLMuestra un menú desplegable que permite seleccionar varias opciones a la vez.

Selección de elementos en un elemento de selección múltiple

El fragmento a continuación selecciona las dos primeras opciones usando selectByVisibleText():

Código para seleccionar elementos en un elemento de selección múltiple

Tabla de referencia del método

Esta tabla resume todos los métodos de la clase Select que se han tratado anteriormente para una consulta rápida.

Comando Mareas Ideales para Lecciones
seleccionarPorTextoVisible() / deseleccionarPorTextoVisible() Selecciona o deselecciona una opción según el texto que se muestra en ella.
seleccionarPorValor() / deseleccionarPorValor() Selecciona o deselecciona una opción por su value atributo.
seleccionarPorÍdeno() / deseleccionarPorÍdeno() Selecciona o deselecciona una opción mediante su índice basado en cero.
esMúltiple() Devuelve VERDADERO si el menú desplegable permite selecciones múltiples, de lo contrario, FALSO.
deseleccionar todo() Deselecciona todas las opciones seleccionadas previamente en un menú desplegable de selección múltiple.

Para controlar los cuadros desplegables, importe el org.openqa.selenium.support.ui.Select Primero, empaquete la clase, luego cree una instancia de Select y llame a cualquiera de los métodos anteriores.

Preguntas Frecuentes

La clase Select es una Selenium Función auxiliar para elementos HTML SELECT. Envuelve un WebElement y expone selectByVisibleText, selectByValue, selectByIndex, isMultiple y deselectAll para una automatización limpia de menús desplegables.

Prefiera selectByValue cuando el atributo de valor sea estable, ya que las etiquetas suelen cambiar para la localización. Use selectByVisibleText cuando el texto sea el principal y evite selectByIndex cuando el orden de las opciones pueda cambiar.

La clase Select solo funciona con etiquetas HTML SELECT reales. Si el elemento web es un div, ul o un widget personalizado con estilo de menú desplegable, debe seleccionar las opciones mediante WebElement.click() o la API de Actions.

Llama a getFirstSelectedOption() en la instancia de Select y verifica su valor de getText(). Para menús desplegables de selección múltiple, itera getAllSelectedOptions() y compara la lista devuelta con las selecciones esperadas.

Sí. Usa isMultiple() para confirmar que el menú desplegable admite varios valores y, a continuación, llama a selectByVisibleText varias veces o a deselectAll() para restablecerlo. Los menús desplegables de selección múltiple requieren que el elemento HTML SELECT declare el atributo multiple.

Utilice WebDriverWait con ExpectedConditions.numberOfElementsToBeMoreThan en el localizador de opciones. Esto garantiza que los menús desplegables que se rellenan de forma asíncrona estén listos antes de instanciar la clase Select y llamar a cualquier método de selección.

Los localizadores autorreparables con inteligencia artificial detectan cuándo cambia el ID, el nombre o la ruta XPath de un elemento SELECT y lo reemplazan por una alternativa que funcione. Reducen los fallos intermitentes de los menús desplegables en los flujos de trabajo tras los rediseños de la interfaz de usuario.

Sí. Los asistentes de codificación de IA convierten una solicitud en inglés sencillo como "seleccione el país ANTÁRTIDA en la página de registro" en una instancia completa de Select con el localizador correcto, la llamada selectByVisibleText y una aserción de verificación.

Resumir este post con: