WebElement em Selenium

โšก Resumo Inteligente

WebElement em Selenium representa cada controle de formulรกrio como um objeto programรกvel, permitindo que os testadores interajam com campos de texto, caixas de seleรงรฃo, botรตes de opรงรฃo e elementos de envio usando os mรฉtodos findElement, sendKeys, click, clear e submit. Java exemplos de cรณdigo.

  • ๐Ÿงฉ Precisรฃo do localizador: Identifique elementos de formulรกrio por id, nome, xpath ou seletor CSS atravรฉs de findElement() para garantir uma interaรงรฃo estรกvel com o DOM.
  • โœ๏ธ Tratamento de entrada: Envie texto editรกvel para campos usando sendKeys() sem sobrescrever os valores existentes durante a execuรงรฃo automatizada.
  • ๐Ÿงน Reinicializaรงรฃo do campo: Limpe os campos de entrada usando o mรฉtodo clear() antes de inserir dados novamente, evitando valores residuais em verificaรงรตes posteriores.
  • ๐Ÿ–ฑ๏ธ Interaรงรฃo com o botรฃo: Acione aรงรตes de login ou navegaรงรฃo por meio do mรฉtodo click() na referรชncia do WebElement correspondente.
  • ๐Ÿ“จ Envio do formulรกrio: Utilize o mรฉtodo submit() em qualquer elemento dentro de um formulรกrio para que o WebDriver acione automaticamente o manipulador de envio do formulรกrio pai.
  • ๐Ÿ›ก๏ธ Dica de estabilidade: Adicione esperas implรญcitas ou explรญcitas antes das chamadas findElement() para evitar a exceรงรฃo NoSuchElementException em pรกginas carregadas dinamicamente.

WebElement em Selenium

WebElement em Selenium

Os formulรกrios sรฃo elementos fundamentais da web que capturam informaรงรตes dos visitantes de um site. Os formulรกrios web incluem diferentes controles de interface grรกfica, como caixas de texto, campos de senha, caixas de seleรงรฃo, botรตes de opรงรฃo, listas suspensas e campos de entrada de arquivos.

Este tutorial explica como acessar cada elemento do formulรกrio usando Selenium WebDriver com Java. Selenium encapsula cada elemento do formulรกrio como um objeto de WebElement. Ela fornece uma API para localizar elementos e interagir com eles, incluindo inserir texto, clicar em botรตes e enviar formulรกrios. As seรงรตes abaixo abordam os mรฉtodos disponรญveis para cada elemento do formulรกrio.

Introduรงรฃo ao WebElement FindElement,FindElements

Introduรงรฃo ao WebElement, findElement(), findElements()

Selenium O WebDriver representa um elemento de formulรกrio simples como um objeto de Elemento Web.

O WebDriver identifica elementos de formulรกrio usando diferentes propriedades do elemento web, incluindo ID, Nome, Classe, XPath, Nome da tag, seletores CSS e texto do link.

O WebDriver fornece os dois mรฉtodos WebElement a seguir para encontrar elementos:

  • encontrarElemento() โ€“ Encontra um รบnico elemento web e o retorna como um WebElement Selenium objeto.
  • encontrarElementos() โ€“ retorna uma lista de objetos WebElement que correspondem aos critรฉrios do localizador.

O exemplo abaixo mostra como recuperar um รบnico elemento, um campo de texto em uma pรกgina da web, como um objeto WebElement usando o mรฉtodo findElement(). O mรฉtodo findElements() para encontrar vรกrios elementos serรก abordado em tutoriais subsequentes.

Passo 1) Importe o pacote necessรกrio para criar objetos WebElement.

Passo 2) Chame o mรฉtodo findElement() disponรญvel na classe WebDriver para recuperar um objeto WebElement, conforme mostrado abaixo.

Selenium Entrada de texto

As caixas de entrada referem-se a um destes dois tipos:

  1. Campos de texto - Selenium Caixas de texto de entrada que aceitam valores digitados e os exibem exatamente como foram inseridos.
  2. Campos de senha โ€“ Caixas de texto que aceitam valores digitados, mas os mascaram como uma sรฉrie de caracteres especiais (geralmente pontos ou asteriscos) para ocultar informaรงรตes confidenciais.

    Selenium Entrada de texto

Localizadores

O mรฉtodo findElement() recebe um parรขmetro, que รฉ um localizador que aponta para o elemento. Diferentes localizadores, incluindo By.id(), By.name(), By.xpath() e By.cssSelector(), encontram elementos na pรกgina usando suas propriedades, como id, nome ou caminho.

Vocรช pode usar plugins como o FirePath para obter o ID, o XPath e outros valores de localizaรงรฃo dos elementos.

Usando o site de exemplo https://demo.guru99.com/test/login.htmlO cรณdigo abaixo localiza o campo de texto "Endereรงo de e-mail" usando o localizador de ID e o campo "Senha" usando o localizador de nome.

Localizadores

  1. O campo de texto do e-mail estรก localizado pelo ID.
  2. O campo de senha estรก localizado ao lado do nome.

enviar chaves Selenium

enviarTeclas() em Selenium รฉ um mรฉtodo usado para inserir conteรบdo editรกvel em campos de texto e senha durante a execuรงรฃo de testes. Esses campos sรฃo identificados por meio de localizadores como nome, classe e ID. O mรฉtodo estรก disponรญvel no objeto WebElement. Ao contrรกrio do mรฉtodo type, sendKeys() nรฃo substitui o texto existente em uma caixa de texto.

Como inserir texto em Selenium

Para inserir texto em campos de texto e campos de senha, o mรฉtodo sendKeys() estรก disponรญvel no WebElement. Selenium.

Usando o mesmo exemplo de https://demo.guru99.com/test/login.htmlO trecho de cรณdigo abaixo localiza o campo de texto e o campo de senha e insere o texto. Selenium.

Texto em Selenium

  1. Localize o campo de texto โ€œEndereรงo de e-mailโ€ usando o localizador de ID.
  2. Localize o campo โ€œSenhaโ€ usando o localizador de nome.
  3. Insira o texto no โ€œEndereรงo de e-mailโ€ usando o Selenium Mรฉtodo sendKeys.
  4. Digite uma senha no campo โ€œSenhaโ€ usando o mรฉtodo sendKeys().

Excluindo valores na entrada Boxes

O Claro() O mรฉtodo apaga o texto dentro de uma caixa de entrada. Este mรฉtodo nรฃo precisa de nenhum parรขmetro. O trecho de cรณdigo abaixo limpa o texto dos campos de e-mail ou senha.

Excluindo valores na entrada Boxes

Selenium Clique nos botรตes

O Selenium O botรฃo de clique รฉ acessado atravรฉs do mรฉtodo click().

No exemplo acima

  1. Encontre o botรฃo para iniciar sessรฃo.
  2. Clique no botรฃo โ€œEntrarโ€ na pรกgina de login do site para autenticar.

Selenium Clique nos botรตes

Selenium Botรตes de envio

Os botรตes de envio enviam o formulรกrio inteiro para o servidor. Vocรช pode chamar o mรฉtodo `click()` no elemento da Web, como mostrado acima, ou usar o mรฉtodo `submit()` em qualquer elemento do formulรกrio ou no prรณprio botรฃo de envio.

Selenium Botรตes de envio

Quando o mรฉtodo submit() รฉ utilizado, o WebDriver consulta o DOM para identificar o formulรกrio ao qual o elemento pertence e, em seguida, aciona sua funรงรฃo de envio.

Automaรงรฃo Code

Aqui estรก o cรณdigo completo e funcional.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

guia de soluรงรฃo de problemas

Se vocรช se deparar com a exceรงรฃo NoSuchElementException() ao procurar elementos, significa que o elemento nรฃo estรก presente na pรกgina no momento em que o WebDriver o acessou.

  1. Verifique novamente seu localizador usando o FirePath ou a opรงรฃo "Inspecionar elemento" no Chrome.
  2. Verifique se o valor usado no cรณdigo difere do valor atual do elemento exibido no FirePath.
  3. Alguns atributos sรฃo dinรขmicos para determinados elementos. Se um valor mudar dinamicamente, use `By.xpath()` ou `By.cssSelector()`, que sรฃo mais confiรกveis, mas um pouco mais complexos.
  4. ร€s vezes, o problema รฉ uma condiรงรฃo de espera; o WebDriver pode executar o cรณdigo antes que a pรกgina termine de carregar.
  5. Adicione uma espera antes de findElement() usando esperas implรญcitas ou explรญcitas.

Resumo

  • A tabela abaixo resume os comandos para acessar cada tipo de elemento discutido acima.
Element Command Descriรงรฃo
Entrada Box sendKeys () Utilizado para inserir valores em caixas de texto.
Claro() Utilizado para limpar caixas de texto, removendo seu valor atual.
Ligaรงรตes clique() Utilizado para clicar no link e aguardar o carregamento completo da pรกgina antes de prosseguir para o prรณximo comando.
Submeter enviar() Utilizado para submeter o formulรกrio acionando o manipulador de envio do formulรกrio pai.
  • WebDriver permite a seleรงรฃo de mais de uma opรงรฃo em um elemento SELECT mรบltiplo.
  • Vocรช pode usar o mรฉtodo submit() em qualquer elemento dentro do formulรกrio. O WebDriver aciona automaticamente a funรงรฃo de envio do formulรกrio ao qual o elemento pertence.

Perguntas Frequentes

O mรฉtodo `findElement()` retorna o primeiro WebElement correspondente e lanรงa uma exceรงรฃo `NoSuchElementException` caso nenhum seja encontrado. O mรฉtodo `findElements()` retorna uma lista de WebElements correspondentes e retorna uma lista vazia caso nenhum elemento corresponda ao localizador.

Um WebElement รฉ um Selenium ร‰ um componente que encapsula mรฉtodos de automaรงรฃo como sendKeys, click e clear. Um elemento HTML รฉ o nรณ DOM subjacente. O WebDriver localiza o nรณ DOM e retorna uma referรชncia a um WebElement para interaรงรฃo.

Sim. Ferramentas com auxรญlio de IA analisam o DOM e propรตem localizadores estรกveis โ€‹โ€‹usando ID, nome, XPath relativo ou seletores CSS. Elas reduzem a fragilidade dos localizadores ao detectar combinaรงรตes de atributos รบnicas e sugerir alternativas quando um atributo muda.

Sim. Localizadores com autorreparaรงรฃo baseados em IA reassociam automaticamente um WebElement quando um atributo รฉ alterado. Isso reduz falhas intermitentes, diminui o esforรงo de manutenรงรฃo e mantรฉm a estabilidade. Selenium Suรญtes estรกveis โ€‹โ€‹mesmo com atualizaรงรตes frequentes da interface do usuรกrio em ciclos de entrega รกgeis.

Exceรงรตes comuns de WebElement incluem StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException e TimeoutException. Cada uma indica um problema diferente de DOM, visibilidade ou sincronizaรงรฃo que deve ser tratado com esperas ou referรชncias de elementos atualizadas.

Resuma esta postagem com: