Saltar al contenido

¿Probar si el elemento está presente usando Selenium WebDriver?

Este dilema se puede tratar de diferentes formas, pero en este caso te enseñamos la solución más completa para nosotros.

Solución:

Usar findElements en vez de findElement.

findElements devolverá una lista vacía si no se encuentran elementos coincidentes en lugar de una excepción.

Para verificar que un elemento está presente, puede probar esto

Boolean isPresent = driver.findElements(By.yourLocator).size() > 0

esto regresará true si se encuentra al menos un elemento y false si no existe.

La documentación oficial recomienda este método:

findElement no debe usarse para buscar elementos no presentes, use findElements (By) y afirme una respuesta de longitud cero en su lugar.

¿Qué pasa con un método privado que simplemente busca el elemento y determina si está presente de esta manera:

private boolean existsElement(String id) 
    try 
        driver.findElement(By.id(id));
     catch (NoSuchElementException e) 
        return false;
    
    return true;

Esto sería bastante fácil y hace el trabajo.

Editar: incluso podrías ir más allá y tomar un By elementLocator como parámetro, eliminando problemas si desea encontrar el elemento por algo que no sea id.

Descubrí que esto funciona para Java:

WebDriverWait waiter = new WebDriverWait(driver, 5000);
waiter.until( ExpectedConditions.presenceOfElementLocated(by) );
driver.FindElement(by);

Comentarios y puntuaciones

Si haces scroll puedes encontrar las notas de otros usuarios, tú igualmente eres capaz insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *