Repaso
English
TestingIntermedioTST-34

¿Por qué Thread.sleep(5000) es una mala forma de esperar en tests de UI, y qué es mejor?

Opciones

  1. Siempre espera todo el tiempo; usa explicit waits (Opción correcta)
  2. Hace caer el navegador cuando el tiempo es largo
  3. Selenium lo prohíbe en todos sus drivers
  4. Es el mejor enfoque para páginas lentas

Respuesta

Siempre espera todo el tiempo (lento) y aun así puede quedarse corto (flaky); usa explicit waits (WebDriverWait con condiciones esperadas) que continúan en cuanto se cumple la condición

Por qué

Las páginas cargan de forma asíncrona, así que los tests deben esperar a los elementos. Un sleep fijo es demasiado largo (frena la suite) o demasiado corto (fallos aleatorios).

Explicit wait: new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.visibilityOfElementLocated(...)) comprueba hasta que la condición se cumple o se agota el tiempo.

Los implicit waits se aplican globalmente a las búsquedas de elementos; no mezcles implicit y explicit waits, porque el tiempo total se vuelve impredecible.

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement banner = wait.until(
    ExpectedConditions.visibilityOfElementLocated(By.id("success")));

Recuerda

Espera a una condición, no un tiempo fijo.

Términos clave

Practica esta pregunta en Repaso