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.
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 | 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. |


