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
- 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;
- Crear una Instància de WebDriverWait
Crea una instància de WebDriverWait
especificant el temps màxim d'espera:
- Utilitzar ExpectedConditions
Utilitza ExpectedConditions
per definir la condició d'espera. Per exemple, esperar fins que un element sigui visible:
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
- Navega a una pàgina web de la teva elecció.
- Identifica un camp de text que no sigui immediatament visible.
- Utilitza una espera explícita per esperar que el camp de text sigui visible.
- 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
- 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