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.

  • โœ… Principio bรกsico: FindElement devuelve el primer WebElement que coincide; FindElements devuelve una lista indexada desde cero, como una matriz.
  • โš ๏ธ Manejo de excepciones: FindElement lanza una excepciรณn NoSuchElementException cuando no existe ninguna coincidencia, mientras que FindElements devuelve una lista vacรญa en lugar de fallar.
  • ๐Ÿงญ Estrategias de localizaciรณn: Elija entre ID, Nombre, Nombre de clase, Nombre de etiqueta, Texto del enlace, Texto parcial del enlace y XPath.
  • ๐Ÿงฉ Enfoque de implementaciรณn: En los scripts de WebDriver, pase un objeto By con un valor de localizador รบnico para seleccionar elementos de forma fiable.
  • ๐Ÿš€ Aplicaciรณn prรกctica: Acoplar Java Los ejemplos demuestran cรณmo hacer clic en un botรณn de opciรณn e iterar sobre una lista de elementos en una pรกgina de demostraciรณn.

FindElement por XPath en Selenium

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 vs Buscar elementos en Selenium

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.

Preguntas Frecuentes

Usa Selenium esperas implรญcitas o explรญcitas Asรญ, el controlador sondea la pรกgina hasta que aparece el elemento. Las esperas explรญcitas con WebDriverWait y las condiciones esperadas son el enfoque mรกs fiable para pรกginas dinรกmicas basadas en AJAX.

El ID es el localizador mรกs rรกpido y fiable porque los navegadores lo indexan directamente. Los selectores CSS suelen ser mรกs rรกpidos que XPath, asรญ que reserva XPath para los casos en los que no haya un ID, nombre o clase รบnicos disponibles.

Sรญ. Los asistentes de prueba con inteligencia artificial pueden analizar el DOM y sugerir automรกticamente localizadores XPath o CSS estables, lo que reduce el tiempo de inspecciรณn manual. RevSe generaron localizadores de unicidad antes de agregarlos a los conjuntos de pruebas de producciรณn.

Los marcos de autorreparaciรณn utilizan IA para detectar cuรกndo un localizador se rompe tras un cambio en la interfaz de usuario y lo sustituyen automรกticamente por el elemento que mejor se ajuste. Esto reduce el mantenimiento de las pruebas causado por los cambios frecuentes en los atributos de los elementos.

Resumir este post con: