Les esperes explícites són una tècnica essencial en l'automatització de proves amb Selenium per gestionar la sincronització entre el teu script de prova i l'aplicació web. A diferència de les esperes implícites, que apliquen un temps d'espera global per a tots els elements, les esperes explícites permeten esperar de manera condicional fins que es compleixi una condició específica.

Conceptes Clau

  • Esperes Explícites: Permeten definir una condició d'espera per a un element específic abans de realitzar una acció.
  • WebDriverWait: Una classe de Selenium que s'utilitza per implementar esperes explícites.
  • ExpectedConditions: Una classe que proporciona diverses condicions predefinides que es poden utilitzar amb WebDriverWait.

Com Utilitzar Esperes Explícites

  1. Importar les Classes Necessàries

Abans de començar a utilitzar esperes explícites, assegura't d'importar les classes necessàries:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

  1. Crear una Instància de WebDriverWait

Crea una instància de WebDriverWait especificant el temps màxim d'espera:

WebDriverWait wait = new WebDriverWait(driver, 10); // 10 segons d'espera màxima

  1. Utilitzar ExpectedConditions

Utilitza ExpectedConditions per definir la condició d'espera. Per exemple, esperar fins que un element sigui visible:

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("elementId")));

Exemple Complet

Aquí tens un exemple complet que mostra com utilitzar una espera explícita per esperar que un botó sigui clicable abans de fer clic:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class ExplicitWaitExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        try {
            driver.get("https://example.com");
            
            WebDriverWait wait = new WebDriverWait(driver, 10);
            WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("submitButton")));
            
            button.click();
        } finally {
            driver.quit();
        }
    }
}

Exercici Pràctic

Objectiu: Escriu un script que utilitzi una espera explícita per esperar que un camp de text sigui visible abans d'introduir text.

Pasos

  1. Navega a una pàgina web de la teva elecció.
  2. Identifica un camp de text que no sigui immediatament visible.
  3. Utilitza una espera explícita per esperar que el camp de text sigui visible.
  4. Introdueix text al camp de text.

Solució

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TextFieldWaitExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        try {
            driver.get("https://example.com");
            
            WebDriverWait wait = new WebDriverWait(driver, 10);
            WebElement textField = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("textFieldId")));
            
            textField.sendKeys("Hello, Selenium!");
        } finally {
            driver.quit();
        }
    }
}

Errors Comuns i Consells

  • TimeoutException: Això passa quan l'element no es troba dins del temps especificat. Assegura't que l'element existeix i que la condició d'espera és correcta.
  • Condicions Incorrectes: Utilitza la condició d'espera adequada per a l'acció que vols realitzar (per exemple, elementToBeClickable per a botons).
  • Temps d'Espera Excessiu: Evita temps d'espera massa llargs, ja que poden alentir les proves. Ajusta el temps d'espera segons les necessitats de l'aplicació.

Conclusió

Les esperes explícites són una eina poderosa per assegurar que els teus scripts de prova s'executin de manera fiable i sincronitzada amb l'aplicació web. Practicar amb diferents condicions d'espera t'ajudarà a millorar l'eficiència i l'eficàcia de les teves proves automatitzades.

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