FindElement por XPath em Selenium

โšก Resumo Inteligente

FindElement por XPath em Selenium O comando `findElements` identifica exclusivamente um รบnico elemento da pรกgina web, enquanto o comando `findElements` retorna uma lista completa dos elementos correspondentes. Ambos os comandos aceitam um objeto localizador `By` que abrange estratรฉgias de busca por ID, Nome, Nome da Classe e XPath.

  • โœ… Princรญpio fundamental: FindElement retorna o primeiro WebElement correspondente; FindElements retorna uma lista indexada a partir de zero, como uma matriz.
  • โš ๏ธ Manipulaรงรฃo de exceรงรฃo: A funรงรฃo FindElement lanรงa uma exceรงรฃo NoSuchElementException quando nรฃo existe nenhuma correspondรชncia, enquanto a funรงรฃo FindElements retorna uma lista vazia em vez de falhar.
  • ๐Ÿงญ Estratรฉgias de localizaรงรฃo: Escolha entre ID, Nome, Nome da Classe, Nome da Tag, Texto do Link, Texto Parcial do Link e XPath.
  • ๐Ÿงฉ Foco de implementaรงรฃo: Passe um objeto By com um valor de localizador exclusivo para direcionar elementos de forma confiรกvel em scripts do WebDriver.
  • ๐Ÿš€ Aplicaรงรฃo prรกtica: Trabalho Java Os exemplos demonstram como clicar em um botรฃo de opรงรฃo e percorrer uma lista de elementos em uma pรกgina de demonstraรงรฃo.

FindElement por XPath em Selenium

In Selenium WebDriver, EncontrarElemento e EncontrarElementos Sรฃo os comandos principais usados โ€‹โ€‹para localizar elementos da web em uma pรกgina antes que qualquer aรงรฃo, como um clique ou a entrada de texto, possa ser realizada neles.

Por que vocรช precisa do comando Localizar Elemento(s)?

A interaรงรฃo com uma pรกgina web exige que o usuรกrio localize primeiro o elemento desejado. O comando "Localizar Elemento" รฉ usado para identificar exclusivamente um elemento especรญfico dentro da pรกgina, enquanto o comando "Localizar Elementos" รฉ usado para identificar uma lista de elementos. Um elemento pode ser identificado usando mรบltiplos critรฉrios. estratรฉgias de localizaรงรฃo tais como ID, Nome, Nome da Classe, Texto do Link, Texto Parcial do Link, Nome da Tag e XPath.

Sintaxe do comando FindElement

A seguir estรก a sintaxe do comando FindElement em Selenium WebDriver:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

O comando FindElement recebe o objeto By como parรขmetro e retorna um รบnico objeto do tipo WebElement. O objeto By, por sua vez, pode ser usado com vรกrias estratรฉgias de localizaรงรฃo, como ID, Nome, Nome da Classe, XPath, etc.

A estratรฉgia de localizaรงรฃo pode assumir qualquer um dos seguintes valores:

  • ID
  • Nome
  • Nome da classe
  • Nome da Tag
  • link Text
  • Texto do link parcial
  • XPath

O valor de localizaรงรฃo รฉ o valor รบnico que permite identificar um elemento da web. ร‰ responsabilidade dos desenvolvedores e testadores garantir que os elementos da web sejam identificรกveis โ€‹โ€‹de forma รบnica por meio de determinadas propriedades, como ID ou nome.

Exemplo:

WebElement loginLink = driver.findElement(By.linkText("Login"));

Exemplo: Localizar elemento em Selenium

O seguinte aplicativo de demonstraรงรฃo รฉ usado para mostrar o comando FindElement em aรงรฃo:

https://demo.guru99.com/test/ajax.html

Cenรกrio:

Passo 1: Abra o AUT

Passo 2: Localize e clique no botรฃo de opรงรฃo e, em seguida, clique no botรฃo Verificar.

package com.sample.stepdefinitions;

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

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://demo.guru99.com/test/ajax.html");

// Find the radio button for โ€œNoโ€ using its ID and click on it
driver.findElement(By.id("no")).click();

//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

Sintaxe do comando FindElements

Quando vocรช precisa de todos os elementos que correspondem a um localizador, em vez de apenas o primeiro, use o mรฉtodo `FindElements`. Abaixo estรก a sua sintaxe:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

O comando FindElements recebe o objeto By como parรขmetro e retorna uma lista de elementos da web. Ele retorna uma lista vazia se nenhum elemento for encontrado usando a estratรฉgia de localizaรงรฃo e o valor do localizador fornecidos.

Exemplo:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Exemplo: Encontre elementos em Selenium

O mesmo aplicativo de demonstraรงรฃo รฉ usado para mostrar como o FindElements itera sobre uma lista de elementos correspondentes.

Cenรกrio:

Passo 1: Abra o URL para Pedido em Teste

Passo 2: Localize o texto dos botรตes de opรงรฃo e imprima-o no console de saรญda.

package com.sample.stepdefinitions;

import java.util.List;

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

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

Encontrar Elemento vs Encontrar Elementos

Abaixo estรฃo as principais diferenรงas entre os comandos Localizar Elemento e Localizar Elementos:

Encontrar elemento vs Encontrar elementos em Selenium

Encontrar Elemento Encontre elementos
Retorna o primeiro elemento web encontrado com o mesmo localizador. Retorna uma lista de elementos da web
Lanรงa a exceรงรฃo NoSuchElementException se nรฃo houver elementos que correspondam ร  estratรฉgia de localizaรงรฃo. Retorna uma lista vazia se nรฃo houver elementos da web que correspondam ร  estratรฉgia do localizador
A funรงรฃo "Localizar Elemento por XPath" encontrarรก apenas um elemento da web. Ele encontrarรก uma coleรงรฃo de elementos que correspondem ร  estratรฉgia de localizaรงรฃo.
Nรฃo Aplicรกvel Cada elemento da pรกgina รฉ indexado com um nรบmero a partir de 0, tal como num array.

Perguntas Frequentes

Uso Selenium esperas implรญcitas ou explรญcitas Assim, o driver consulta a pรกgina repetidamente atรฉ que o elemento apareรงa. Esperas explรญcitas com WebDriverWait e condiรงรตes esperadas sรฃo a abordagem mais confiรกvel para pรกginas dinรขmicas baseadas em AJAX.

O ID รฉ o localizador mais rรกpido e confiรกvel porque os navegadores o indexam diretamente. Os seletores CSS geralmente sรฃo mais rรกpidos que o XPath, portanto, reserve o XPath para casos em que nรฃo haja um ID, nome ou classe exclusivos disponรญveis.

Sim. Assistentes de teste com inteligรชncia artificial podem analisar o DOM e sugerir automaticamente localizadores XPath ou CSS estรกveis, reduzindo o tempo de inspeรงรฃo manual. RevVerifique a unicidade dos localizadores gerados antes de adicionรก-los aos conjuntos de testes de produรงรฃo.

Frameworks de autorrecuperaรงรฃo usam IA para detectar quando um localizador falha apรณs uma alteraรงรฃo na interface do usuรกrio e o substitui automaticamente pelo elemento correspondente mais prรณximo. Isso reduz a manutenรงรฃo de testes causada por alteraรงรตes frequentes nos atributos dos elementos.

Resuma esta postagem com: