¿Cómo usar findElement() de xPath en Selenium?

Lazy Placeholder

Si quieres interactuar con cualquier elemento web (botón, enlace, cuadro de texto o etiqueta) Selenium WebDriver primero necesita localizarlo.

Aquí es, donde entran en juego los muy importantes comandos findElement() y findElements().

Estos dos métodos forman el núcleo de la automatización con Selenium: permitiendo identificar, acceder y operar sobre elementos de la página usando estrategias de localización.

Por qué son necesarios FindElement y FindElements

Selenium no “ve” la pantalla como un humano, sino que interactúa con la estructura HTML (DOM) de la página web.

Si quieres realizar cualquier acción (clic, ingreso de texto, verificación), Selenium debe encontrar primero el elemento objetivo.

findElement() → se encarga de identificar un solo elemento específico.

findElements() → se encarga de identificar una colección de elementos coincidentes.

Sin ninguno de estos 2 comandos, Selenium NO puede hacer clic, enviar texto, ni validar los contenidos.

1. Comando FindElement()

El propósito de FindElement() es el encontrar un único elemento web que coincida con tu estrategia de localización.

Si hay múltiples elementos que coinciden, Selenium siempre toma al primero que encuentre. Si no existen coincidencias, se lanza una excepción NoSuchElementException.

Sintaxis (Java)

WebElement element = driver.findElement(By.("valorDelLocalizador"));

Ejemplo

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

Localizadores soportados

  • By.id(“idValue”)
  • By.name(“nameValue”)
  • By.className(“classValue”)
  • By.tagName(“tag”)
  • By.linkText(“visibleText”)
  • By.partialLinkText(“partialText”)
  • By.cssSelector(“cssPattern”)
  • By.xpath(“xpathExpression”)

2. Ejemplo práctico de FindElement()

En el caso de que quisieras hacer clic en un botón de opción “No” y verificar su estado.

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

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

// Hacer clic en el radio button "No"
driver.findElement(By.id("no")).click();

// Hacer clic en el botón "Check"
driver.findElement(By.id("buttoncheck")).click();

driver.quit();

3. Comando FindElements()

Con el propósito de encontrar varios elementos que coincidan con un localizador dado. Esto, devuelve una Lista de WebElements que se puede iterar.

Si no hay coincidencias, devolverá una lista vacía (sin mostrar ninguna excepción).

Sintaxis (Java)

List elements = driver.findElements(By.("valorDelLocalizador"));

Ejemplo

List elements = driver.findElements(By.name("name"));
System.out.println("Número de elementos: " + elements.size());

for (WebElement e : elements) {
    System.out.println("Valor del radio button: " + e.getAttribute("value"));
}

4. Ejemplo práctico de FindElements()

System.setProperty("webdriver.chrome.driver", "C:\drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/ajax.html");

// Recopilar todos los radio buttons por el atributo name
List radios = driver.findElements(By.name("name"));
System.out.println("Número de elementos: " + radios.size());

for (WebElement radio : radios) {
    System.out.println("Opción: " + radio.getAttribute("value"));
}

driver.quit();

5. Diferencias entre FindElement() y findElements()

CaracterísticafindElement()findElements()
Tipo de retornoWebElement (elemento único)List (colección)
Si no hay coincidenciaLanza NoSuchElementExceptionDevuelve lista vacía
Si hay varias coincidenciasDevuelve solo el primer elementoDevuelve todos los elementos coincidentes
Uso comúnFormularios, botonesListas, enlaces, tablas
IndexaciónNo aplicaCada elemento indexado (0-based)

6. Usos prácticos en el mundo real

findElement()

  • Completar campos de usuario/contraseña
  • Hacer clic en enlaces de envío
  • Validar títulos o texto de botones

findElements()

  • Obtener todas las imágenes, enlaces o valores de listas
  • Validar la presencia de elementos repetidos (menús, tablas)
  • Ejecutar operaciones en múltiples elementos similares

Resumen rápido

findElement(): Devuelve el primer elemento que coincide con tu localizador y lanza excepción si no encuentra nada.

findElements(): Devuelve una lista de todos los elementos coincidentes o una lista vacía si no hay coincidencias.

CONSEJO RÁPIDO: Usar findElements() para verificar la existencia (.size() > 0) antes de ejecutar las acciones. Esto evita las excepciones y mantiene tus scripts estables.

Conclusión

Si necesitas un solo elemento, usa findElement(). Si necesitas varios o no estás seguro de su existencia, usa findElements().

El dominar estos dos métodos es fundamental para Selenium WebDriver 2025 y la automatización profesional de pruebas web.