Sobes.tech
Middle

Nombra algunos tipos de espera en Selenium y explícalos.

sobes.tech AI

Respuesta de la IA

  1. Esperas implícitas (Implicit Waits)

    • Se configuran una vez para toda la sesión de WebDriver.
    • WebDriver esperará una cantidad determinada de tiempo antes de lanzar una excepción NoSuchElementException al buscar un elemento.
    • El tiempo de espera se aplica a cada llamada a findElement(s).
    • Si el elemento se encuentra antes, WebDriver no esperará hasta el final.
  2. Esperas explícitas (Explicit Waits)

    • Se aplican a una condición específica para un elemento concreto.
    • WebDriver esperará a que se cumpla la condición durante un tiempo máximo establecido.
    • Si la condición se cumple antes, el código continúa.
    • Si no se cumple en el tiempo máximo, se lanza una excepción TimeoutException.
    • Generalmente se usan con la clase WebDriverWait y ExpectedConditions.
    // Ejemplo de espera explícita
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myButton")));
    
  3. Esperas flexibles (Fluent Waits)

    • Una versión más avanzada de las Esperas explícitas.
    • Permiten definir no solo el tiempo máximo de espera, sino también:
      • La frecuencia de comprobación de la condición (intervalo de sondeo).
      • Los tipos de excepciones a ignorar durante la espera.
    // Ejemplo de espera flexible
    Wait<WebDriver> wait = new FluentWait<>(driver)
            .withTimeout(Duration.ofSeconds(30))
            .pollingEvery(Duration.ofSeconds(5))
            .ignoring(NoSuchElementException.class);
    
    WebElement element = wait.until(driver -> driver.findElement(By.id("myElement")));
    

Tabla resumen:

Tipo de espera Ámbito de aplicación Flexibilidad Manejo de excepciones Uso
Espera implícita Toda la sesión de WebDriver Baja (tiempo fijo) Automático Tiempo de espera general para todas las búsquedas
Espera explícita Condición específica para un elemento Alta (condición definida) Manual (TimeoutException) Espera a un estado específico del elemento
Espera flexible Condición específica para un elemento Muy alta (intervalo, ignorar) Manual (TimeoutException) Configuración más fina de la espera