Como selecionar valor no menu suspenso em Selenium

โšก Resumo Inteligente

Selecione o valor na lista suspensa. Selenium Utiliza a classe Select dedicada para controlar elementos SELECT do HTML. A classe expรตe os mรฉtodos selectByVisibleText, selectByValue e selectByIndex, que selecionam opรงรตes com precisรฃo e suportam listas suspensas de seleรงรฃo mรบltipla.

  • ๐Ÿ“ฆ Importe o pacote: Inclua org.openqa.selenium.support.ui.Select e envolva o WebElement antes de chamar qualquer mรฉtodo de seleรงรฃo.
  • ๐ŸŽฏ Escolha o mรฉtodo correto: Escolha selectByVisibleText, selectByValue ou selectByIndex com base em qual opรงรฃo รฉ mais estรกvel: exibir o texto, o atributo de valor ou a posiรงรฃo.
  • ๐Ÿ” Lidar com listas suspensas de seleรงรฃo mรบltipla: Use isMultiple para detectรก-los e deselectAll ou deselectByVisibleText para limpar as escolhas anteriores.
  • โœ… Verifique a seleรงรฃo: Chame o mรฉtodo getFirstSelectedOption para confirmar se o teste realmente alterou o estado da lista suspensa.
  • ๐Ÿค– Use localizadores de IA: Localizadores de IA com capacidade de auto-reparaรงรฃo consertam XPaths de seleรงรฃo de elementos quebrados apรณs alteraรงรตes na interface do usuรกrio, mantendo a funcionalidade.ping Os testes de menu suspenso permanecem estรกveis โ€‹โ€‹em todas as versรตes.

Selecione o valor na lista suspensa. Selenium

O que รฉ a classe Select em Selenium?

O Selecione a turma em Selenium รฉ uma classe auxiliar do org.openqa.selenium.support.ui Pacote que permite ao WebDriver interagir com HTML <select> Elementos. Expรตe mรฉtodos para selecionar e desmarcar opรงรตes por texto visรญvel, valor ou รญndice, e para detectar se uma lista suspensa aceita mรบltiplas seleรงรตes.

Porque Select รฉ um regular Java classe, vocรช cria uma instรขncia com o new palavra-chave e passe o WebElement que aponta para o <select> etiqueta na pรกgina.

Como selecionar o menu suspenso em Selenium

Antes de lidar com uma lista suspensa em SeleniumSรฃo necessรกrios dois passos:

  1. Importe o pacote org.openqa.selenium.support.ui.Select.
  2. Instanciar o menu suspenso como um Select objeto em Selenium WebDriver.

Por exemplo, abra o Mercury Pรกgina de inscriรงรฃo de passeios (https://demo.guru99.com/test/newtours/register.php) e localize o menu suspenso โ€œPaรญsโ€.

Selecione o menu suspenso em Selenium

Passo 1) Importe o pacote Select.

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

Etapa 2) Declare o elemento suspenso como uma instรขncia da classe Select. No exemplo abaixo, a instรขncia รฉ nomeada. drpCountry.

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

Passo 3) Comece a controlar o menu suspenso. Use qualquer mรฉtodo Select para escolher uma opรงรฃo. O exemplo abaixo seleciona โ€œANTรRTIDAโ€:

drpCountry.selectByVisibleText("ANTARCTICA");

Selecione Mรฉtodos em Selenium

A classe Select fornece vรกrios mรฉtodos para interagir com opรงรตes de listas suspensas. Os cinco mais comuns sรฃo descritos abaixo.

1) selectByVisibleText() e deselectByVisibleText()

  • Seleciona ou desmarca a opรงรฃo cujo texto exibido corresponde ao parรขmetro.
  • Parรขmetro: O texto exato exibido para a opรงรฃo.

Exemplo:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selecionarPorValor() e deselecionarPorValor()

  • Seleciona ou desmarca a opรงรฃo cujo value O atributo corresponde ao parรขmetro.
  • Observe que o texto exibido e o value Os atributos sรฃo frequentemente diferentes, como mostrado abaixo.
  • Parรขmetro: a opรงรฃo value atributo.

selecionarPorValor e deselecionarPorValor

Exemplo:

drpCountry.selectByValue("234");

3) selectByIndex() e deselectByIndex()

  • Seleciona ou desmarca a opรงรฃo no รญndice especificado. Os รญndices comeรงam em zero.
  • Parรขmetro: o รญndice inteiro da opรงรฃo.

Exemplo:

drpCountry.selectByIndex(0);

4) รฉMรบltiplo()

  • Returns TRUE se o menu suspenso permitir vรกrias seleรงรตes ao mesmo tempo, caso contrรกrio FALSE.
  • Parรขmetro: Nenhum.

Exemplo:

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

5) deselecionarTudo()

  • Limpa todas as opรงรตes selecionadas. Vรกlido apenas em listas suspensas de seleรงรฃo mรบltipla.
  • Parรขmetro: Nenhum.

Exemplo:

drpCountry.deselectAll();

Automaรงรฃo Code de Selecionar Mรฉtodos em Selenium

Os seguintes Java O programa demonstra a classe Select em uma lista suspensa de seleรงรฃo รบnica e em uma lista suspensa de seleรงรฃo mรบltipla.

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

Selecionando itens em um elemento SELECT mรบltiplo

O selectByVisibleText() Esse mรฉtodo tambรฉm funciona em listas suspensas de seleรงรฃo mรบltipla. Por exemplo, use https://jsbin.com/osebed/2 como a base URLEle exibe um menu suspenso que aceita vรกrias seleรงรตes simultaneamente.

Selecionando itens em um elemento de seleรงรฃo mรบltipla

O trecho de cรณdigo abaixo seleciona as duas primeiras opรงรตes usando selectByVisibleText():

Selecionando itens em um elemento de seleรงรฃo mรบltipla

Tabela de Referรชncia de Mรฉtodos

Esta tabela resume todos os mรฉtodos da classe Select abordados acima para facilitar a consulta.

Command Descriรงรฃo
selecionarPorTextoVisรญvel() / deselecionarPorTextoVisรญvel() Seleciona ou desmarca uma opรงรฃo com base no texto exibido.
selecionarPorValor() / deselecionarPorValor() Seleciona ou desmarca uma opรงรฃo pelo seu value atributo.
selecionarPorรndice() / deselecionarPorรndice() Seleciona ou desmarca uma opรงรฃo com base em seu รญndice (que comeรงa em zero).
รฉMรบltiplo() Retorna VERDADEIRO se a lista suspensa permitir mรบltiplas seleรงรตes, caso contrรกrio, retorna FALSO.
desmarcar todos() Desmarca todas as opรงรตes previamente selecionadas em uma lista suspensa de seleรงรฃo mรบltipla.

Para controlar as caixas suspensas, importe o org.openqa.selenium.support.ui.Select Primeiro, crie um pacote, depois uma instรขncia de Select e chame qualquer um dos mรฉtodos acima.

Perguntas Frequentes

A classe Select รฉ uma Selenium Funรงรฃo auxiliar para elementos SELECT em HTML. Ela envolve um WebElement e expรตe os mรฉtodos selectByVisibleText, selectByValue, selectByIndex, isMultiple e deselectAll para uma automaรงรฃo limpa de listas suspensas.

Prefira `selectByValue` quando o atributo `value` for estรกvel, pois os rรณtulos costumam mudar para fins de localizaรงรฃo. Use `selectByVisibleText` quando o texto for definitivo e evite `selectByIndex` quando a ordem das opรงรตes puder mudar.

A classe Select sรณ funciona em tags SELECT HTML reais. Se o WebElement for uma div, ul ou um widget personalizado estilizado para parecer um menu suspenso, vocรช deve clicar nas opรงรตes usando WebElement.click() ou a API Actions.

Chame o mรฉtodo `getFirstSelectedOption()` na instรขncia `Select` e verifique o valor obtido com `getText()`. Para listas suspensas de seleรงรฃo mรบltipla, itere sobre `getAllSelectedOptions()` e compare a lista retornada com as seleรงรตes esperadas.

Sim. Use `isMultiple()` para confirmar se a lista suspensa permite mรบltiplos valores e, em seguida, chame `selectByVisibleText` vรกrias vezes ou `deselectAll()` para redefinir. Listas suspensas de seleรงรฃo mรบltipla exigem que o elemento HTML `SELECT` declare o atributo `multiple`.

Use WebDriverWait com ExpectedConditions.numberOfElementsToBeMoreThan no localizador de opรงรตes. Isso garante que as listas suspensas preenchidas de forma assรญncrona estejam prontas antes de instanciar a classe Select e chamar qualquer mรฉtodo de seleรงรฃo.

Localizadores com inteligรชncia artificial e capacidade de autorreparaรงรฃo detectam quando o ID, o nome ou o XPath de um elemento SELECT foi alterado e alternam para uma alternativa funcional. Eles reduzem falhas instรกveis โ€‹โ€‹em menus suspensos em fluxos de trabalho apรณs reformulaรงรตes da interface do usuรกrio.

Sim. Os assistentes de codificaรงรฃo de IA transformam uma solicitaรงรฃo em linguagem simples, como "selecione o paรญs ANTรRTIDA na pรกgina de registro", em uma instรขncia Select completa com o localizador correto, a chamada selectByVisibleText e uma declaraรงรฃo de verificaรงรฃo.

Resuma esta postagem com: