FindElement por XPath en Selenium
โก Resumen inteligente
FindElement por XPath en Selenium Identifica de forma รบnica un รบnico elemento web en una pรกgina, mientras que FindElements devuelve una lista completa de los elementos coincidentes. Ambos comandos aceptan un objeto localizador By que abarca estrategias de ID, nombre, nombre de clase y XPath.
In Selenium WebDriver, BuscarElemento y BuscarElementos Son los comandos bรกsicos que se utilizan para localizar elementos web en una pรกgina antes de que se pueda realizar cualquier acciรณn sobre ellos, como un clic o la introducciรณn de texto.
ยฟPor quรฉ necesita el comando Buscar elemento(s)?
La interacciรณn con una pรกgina web requiere que el usuario primero localice el elemento web. El comando Buscar elemento se utiliza para identificar de forma รบnica un elemento web dentro de la pรกgina web, mientras que el comando Buscar elementos se utiliza para identificar una lista de elementos web. Un elemento se puede identificar utilizando varios estrategias de localizaciรณn tales como ID, Nombre, Nombre de clase, Texto del enlace, Texto parcial del enlace, Nombre de la etiqueta y XPath.
Sintaxis del comando BuscarElemento
A continuaciรณn se muestra la sintaxis del comando FindElement en Selenium controlador web:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
El comando FindElement toma el objeto By como parรกmetro y devuelve un รบnico objeto de tipo WebElement. El objeto By, a su vez, puede utilizarse con diversas estrategias de localizaciรณn, como ID, nombre, nombre de clase, XPath, etc.
La estrategia de localizaciรณn puede tener cualquiera de los siguientes valores:
- ID
- Nombre
- Nombre de la clase
- Nombre de etiqueta
- Texto del enlace
- Texto de enlace parcial
- XPath
El valor de localizaciรณn es el valor รบnico que permite identificar un elemento web. Es responsabilidad de los desarrolladores y evaluadores asegurarse de que los elementos web sean identificables de forma รบnica mediante propiedades como el ID o el nombre.
Ejemplo:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Ejemplo: buscar elemento en Selenium
La siguiente aplicaciรณn de demostraciรณn se utiliza para mostrar el comando FindElement en acciรณn:
https://demo.guru99.com/test/ajax.html
Escenario:
Paso 1: Abrir la AUT
Paso 2: Busque y haga clic en el botรณn de opciรณn, luego haga clic en el botรณn Comprobar.
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();
}
}
Sintaxis del comando BuscarElementos
Cuando necesites todos los elementos que coincidan con un localizador, en lugar de solo el primero, usa FindElements. A continuaciรณn se muestra su sintaxis:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
El comando FindElements toma el objeto By como parรกmetro y devuelve una lista de elementos web. Devuelve una lista vacรญa si no se encuentra ningรบn elemento utilizando la estrategia de localizaciรณn y el valor de localizaciรณn especificados.
Ejemplo:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Ejemplo: buscar elementos en Selenium
Se utiliza la misma aplicaciรณn de demostraciรณn para mostrar cรณmo FindElements itera sobre una lista de elementos coincidentes.
Escenario:
Paso 1: Abra la pestaรฑa URL Para la aplicaciรณn bajo prueba
Paso 2: Encuentra el texto de los botones de opciรณn e imprรญmelo en la consola de salida.
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"));
}
}
}
Buscar elemento vs Buscar elementos
A continuaciรณn se detallan las principales diferencias entre los comandos Find Element y Find Elements:
| Buscar elemento | Buscar elementos |
|---|---|
| Devuelve el primer elemento web si se encuentran varios elementos web con el mismo localizador. | Devuelve una lista de elementos web. |
| Lanza la excepciรณn NoSuchElementException si no hay elementos que coincidan con la estrategia de localizaciรณn. | Devuelve una lista vacรญa si no hay elementos web que coincidan con la estrategia del localizador |
| La funciรณn Find Element by XPath solo encontrarรก un elemento web. | Encontrarรก una colecciรณn de elementos que coincidan con la estrategia de localizaciรณn. |
| No aplicable | Cada elemento web estรก indexado con un nรบmero que comienza desde 0, al igual que un array. |


