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 excepcionsNoSuchElementExceptiondurant 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.
- Configura el teu entorn de desenvolupament amb Selenium i el controlador del navegador.
 - Crea un script que obri una pàgina web amb elements dinàmics.
 - Implementa una espera fluida per trobar un element específic.
 - Realitza una acció sobre l'element (per exemple, un clic).
 - 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
- Què és l'Automatització de Proves?
 - Beneficis de l'Automatització de Proves
 - Visió General de Selenium
 - Configuració del Teu Entorn
 
Mòdul 2: Començant amb Selenium
- Introducció a Selenium WebDriver
 - Instal·lació de Selenium WebDriver
 - Primer Script de Selenium
 - Comprensió de la Interfície WebDriver
 
Mòdul 3: Localització d'Elements Web
- Introducció als Localitzadors
 - Ús de Localitzadors ID i Nom
 - XPath i Selectors CSS
 - Estratègies Avançades de Localització
 
Mòdul 4: Interacció amb Elements Web
- Realització d'Accions sobre Elements Web
 - Gestió de Desplegables i Caixes de Selecció
 - Treballant amb Alertes i Pop-ups
 - Gestió de Finestres del Navegador i Frames
 
Mòdul 5: Sincronització en Selenium
Mòdul 6: Marc de Proves i Selenium
- Introducció a TestNG
 - Configuració de TestNG amb Selenium
 - Creació de Casos de Prova TestNG
 - Proves Basades en Dades amb TestNG
 
Mòdul 7: Conceptes Avançats de Selenium
- Gestió de Trucades AJAX
 - Treballant amb Cookies
 - Captura de Captures de Pantalla
 - Execució de JavaScript amb Selenium
 
Mòdul 8: Selenium Grid i Proves en Paral·lel
- Introducció a Selenium Grid
 - Configuració de Selenium Grid
 - Execució de Proves en Paral·lel
 - Proves Multinavegador
 
Mòdul 9: Integració Contínua i Selenium
- Introducció a la Integració Contínua
 - Integració de Selenium amb Jenkins
 - Automatització de l'Execució de Proves
 - Informes i Registre
 
