En aquest tema, explorarem com gestionar les trucades AJAX en les proves automatitzades amb Selenium. AJAX (Asynchronous JavaScript and XML) permet que les pàgines web actualitzin contingut de manera dinàmica sense necessitat de recarregar la pàgina completa. Això pot complicar les proves automatitzades, ja que els elements poden no estar disponibles immediatament després d'una acció. Aprendrem a manejar aquestes situacions per assegurar que les nostres proves siguin robustes i fiables.
Conceptes Clau
-
Què és AJAX?
- AJAX és una tècnica de desenvolupament web que permet actualitzar parts d'una pàgina web sense recarregar-la completament.
- Utilitza una combinació de tecnologies com JavaScript, XML, HTML i CSS.
-
Reptes de les Trucades AJAX en Proves Automatitzades
- Els elements poden no estar disponibles immediatament després d'una acció.
- Les proves poden fallar si no es gestiona correctament el temps d'espera per a la càrrega dels elements.
-
Estratègies per Gestionar AJAX amb Selenium
- Utilitzar esperes explícites per esperar que els elements estiguin disponibles.
- Verificar l'estat de càrrega de la pàgina o elements específics.
Exemples Pràctics
Exemple 1: Espera Explícita per a Trucades AJAX
Utilitzarem esperes explícites per esperar que un element es carregui després d'una trucada AJAX.
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.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class AjaxExample { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("https://example.com/ajax-page"); // Realitzar una acció que desencadeni una trucada AJAX WebElement triggerButton = driver.findElement(By.id("ajaxButton")); triggerButton.click(); // Espera explícita per a l'element que es carrega després de l'AJAX WebDriverWait wait = new WebDriverWait(driver, 10); WebElement ajaxElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ajaxElement"))); // Verificar que l'element està present System.out.println("Element visible: " + ajaxElement.isDisplayed()); driver.quit(); } }
Explicació del Codi
- WebDriverWait: Utilitzem
WebDriverWait
per crear una espera explícita. - ExpectedConditions: Utilitzem
ExpectedConditions.visibilityOfElementLocated
per esperar que l'element sigui visible. - click(): Desencadenem una acció que provoca una trucada AJAX.
Exercici Pràctic
Objectiu: Escriu un script de Selenium que gestioni una trucada AJAX en una pàgina web de prova.
- Accedeix a una pàgina web que utilitzi AJAX per carregar contingut.
- Desencadena una acció que provoqui una trucada AJAX.
- Utilitza una espera explícita per verificar que el contingut AJAX s'ha carregat correctament.
- Imprimeix un missatge de confirmació quan l'element AJAX sigui visible.
Solució
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.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class AjaxExercise { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); driver.get("https://example.com/ajax-test"); // Desencadenar l'acció AJAX WebElement triggerButton = driver.findElement(By.id("loadDataButton")); triggerButton.click(); // Espera explícita per a l'element AJAX WebDriverWait wait = new WebDriverWait(driver, 10); WebElement ajaxContent = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ajaxContent"))); // Confirmació de la càrrega de l'element System.out.println("Contingut AJAX carregat: " + ajaxContent.isDisplayed()); driver.quit(); } }
Conclusió
Gestionar les trucades AJAX és essencial per assegurar que les proves automatitzades amb Selenium siguin fiables. Utilitzar esperes explícites és una tècnica efectiva per manejar la càrrega dinàmica de contingut. Amb la pràctica, podràs aplicar aquestes tècniques a escenaris més complexos i assegurar que les teves proves siguin robustes i eficients.
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