En aquest tema, explorarem les esperes fluents en Selenium, una tècnica avançada per gestionar la sincronització entre el teu script de prova i l'aplicació web. Les esperes fluents són útils quan necessites més control sobre la freqüència i la durada de les esperes.

Què són les Esperes Fluents?

Les esperes fluents permeten definir:

  • Durada màxima d'espera: El temps màxim que el WebDriver ha d'esperar abans de llançar una excepció.
  • Freqüència de comprovació: La freqüència amb la qual el WebDriver comprovarà la condició.
  • Ignorar excepcions: Les excepcions que es poden ignorar durant l'espera.

A diferència de les esperes implícites i explícites, les esperes fluents ofereixen més flexibilitat i control sobre el comportament de l'espera.

Com Configurar Esperes Fluents

Exemple de Codi

A continuació, es mostra un exemple de com configurar una espera fluida en Selenium utilitzant Java:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.FluentWait;
import java.time.Duration;
import java.util.NoSuchElementException;
import java.util.function.Function;

public class FluentWaitExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("http://example.com");

        // Configuració de l'espera fluida
        FluentWait<WebDriver> wait = new FluentWait<>(driver)
                .withTimeout(Duration.ofSeconds(30)) // Durada màxima d'espera
                .pollingEvery(Duration.ofSeconds(5)) // Freqüència de comprovació
                .ignoring(NoSuchElementException.class); // Excepcions a ignorar

        // Funció per trobar l'element
        WebElement element = wait.until(new Function<WebDriver, WebElement>() {
            public WebElement apply(WebDriver driver) {
                return driver.findElement(By.id("dynamicElement"));
            }
        });

        // Accions amb l'element
        element.click();

        driver.quit();
    }
}

Explicació del Codi

  • FluentWait<WebDriver>: Crea una instància de FluentWait per al WebDriver.
  • withTimeout(Duration.ofSeconds(30)): Estableix el temps màxim d'espera a 30 segons.
  • pollingEvery(Duration.ofSeconds(5)): Defineix que el WebDriver comprovarà la condició cada 5 segons.
  • ignoring(NoSuchElementException.class): Indica que s'ignoraran les excepcions NoSuchElementException durant l'espera.
  • apply(WebDriver driver): Defineix la funció que comprovarà la condició, en aquest cas, trobar un element amb l'ID "dynamicElement".

Exercici Pràctic

Objectiu: Implementar una espera fluida per trobar un element que apareix de manera dinàmica en una pàgina web.

  1. Configura el teu entorn de desenvolupament amb Selenium i el controlador del navegador.
  2. Crea un script que obri una pàgina web amb elements dinàmics.
  3. Implementa una espera fluida per trobar un element específic.
  4. Realitza una acció sobre l'element (per exemple, un clic).
  5. Tanca el navegador.

Solució

Segueix l'exemple de codi proporcionat anteriorment per implementar l'exercici. Assegura't de substituir "path/to/chromedriver" amb el camí correcte al teu controlador de Chrome i "http://example.com" amb l'URL de la pàgina web que utilitzaràs per a la prova.

Conclusió

Les esperes fluents són una eina poderosa per gestionar la sincronització en Selenium, especialment quan treballes amb aplicacions web dinàmiques. Proporcionen un control detallat sobre la freqüència i la durada de les esperes, millorant la robustesa dels teus scripts de prova. Practica l'ús d'esperes fluents per familiaritzar-te amb aquesta tècnica i millorar les teves habilitats d'automatització de proves.

Automatització de Proves amb Selenium

Mòdul 1: Introducció a l'Automatització de Proves

Mòdul 2: Començant amb Selenium

Mòdul 3: Localització d'Elements Web

Mòdul 4: Interacció amb Elements Web

Mòdul 5: Sincronització en Selenium

Mòdul 6: Marc de Proves i Selenium

Mòdul 7: Conceptes Avançats de Selenium

Mòdul 8: Selenium Grid i Proves en Paral·lel

Mòdul 9: Integració Contínua i Selenium

Mòdul 10: Millors Pràctiques i Resolució de Problemes

© Copyright 2024. Tots els drets reservats