Saltar al contenido

¿Cómo esperar hasta que un elemento esté presente en Selenium?

Solución:

Necesitas llamar ignoring con excepción de ignorar mientras el WebDriver esperará.

FluentWait<WebDriver> fluentWait = new FluentWait<>(driver)
        .withTimeout(30, TimeUnit.SECONDS)
        .pollingEvery(200, TimeUnit.MILLISECONDS)
        .ignoring(NoSuchElementException.class);

Consulte la documentación de FluentWait para obtener más información. Pero tenga en cuenta que esta condición ya está implementada en ExpectedConditions, por lo que debe usar

WebElement element = (new WebDriverWait(driver, 10))
   .until(ExpectedConditions.elementToBeClickable(By.id("someid")));

* Actualización para versiones más nuevas de Selenium:

withTimeout(long, TimeUnit) has become withTimeout(Duration)
pollingEvery(long, TimeUnit) has become pollingEvery(Duration)

Entonces el código se verá así:

FluentWait<WebDriver> fluentWait = new FluentWait<>(driver)
        .withTimeout(Duration.ofSeconds(30)
        .pollingEvery(Duration.ofMillis(200)
        .ignoring(NoSuchElementException.class);

El tutorial básico para esperar se puede encontrar aquí.

WebDriverWait wait = new WebDriverWait(driver,5)
wait.until(ExpectedConditions.visibilityOf(element));

puede usar esto como un tiempo antes de que se ejecute la carga de código de página completa y se produzca un error. el tiempo es en segundo

Permítame recomendarle que use la biblioteca Selenide. Permite escribir pruebas mucho más concisas y legibles. Puede esperar la presencia de elementos con una sintaxis mucho más corta:

$("#elementId").shouldBe(visible);

Aquí hay un proyecto de muestra para probar la búsqueda de Google: https://github.com/selenide-examples/google

¡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 *