Saltar al contenido
SDETRole
SDETRole

Glosario · Automatización de UI

Espera implícita (implicit wait)

En inglés: Implicit wait

También llamado: implicitlyWait, esperas implícitas, espera implícita Selenium

Definición

Un ajuste global de Selenium que hace que cada llamada a findElement siga buscando durante un tiempo fijo antes de lanzar NoSuchElementException.

Una espera implícita le indica a WebDriver que siga buscando un elemento durante un tiempo fijo antes de rendirse. Se configura una vez por sesión del driver y se aplica a partir de ese momento a todas las llamadas a findElement y findElements. Es “implícita” porque la espera ocurre de forma silenciosa dentro de la búsqueda del elemento, no en un punto que tú eliges. El valor predeterminado es cero.

Ejemplo (Selenium 4, Java)

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

// Polls for up to 5 seconds for the element to exist in the DOM
WebElement email = driver.findElement(By.id("email"));

// findElements also waits up to 5 seconds, then returns an empty list
List<WebElement> errors = driver.findElements(By.cssSelector(".error"));

En Selenium 4, la sobrecarga con Duration es la que hay que usar. La antigua implicitlyWait(long, TimeUnit) está obsoleta.

En qué se diferencia de una espera explícita

Espera implícita Espera explícita
Alcance Todas las búsquedas de elementos de la sesión Una condición en un punto de la prueba
Qué espera Que el elemento exista en el DOM Cualquier condición: visible, clicable, texto presente, desaparecido
Dónde se define Una vez, en el driver En línea, con WebDriverWait

Una espera implícita no espera a que un elemento sea visible o esté habilitado. Si el botón existe pero sigue deshabilitado, findElement devuelve el elemento de inmediato y el clic puede fallar o no hacer nada.

Por qué muchos equipos la evitan

  • Mezclarla con esperas explícitas es impredecible. La documentación de Selenium desaconseja combinarlas, porque las búsquedas dentro de una espera explícita también aplican el timeout implícito.
  • Comprobar que algo no existe se vuelve lento. findElements(...).isEmpty() espera el timeout implícito completo cada vez que el elemento, correctamente, no está.
  • Oculta la intención. Quien lee el código no puede saber qué pasos necesitan realmente esperar.

La recomendación habitual es dejar la espera implícita en cero y usar esperas explícitas donde hagan falta. Si una suite heredada depende de ella, mantenla corta y no añadas esperas explícitas encima sin quitarla.

Escribe para buscar en todo SDETRole.

Búsqueda de texto completo con Pagefind · se ejecuta en tu navegador Abrir la página de búsqueda →