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

  1. 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.
  2. 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.
  3. 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.

  1. Accedeix a una pàgina web que utilitzi AJAX per carregar contingut.
  2. Desencadena una acció que provoqui una trucada AJAX.
  3. Utilitza una espera explícita per verificar que el contingut AJAX s'ha carregat correctament.
  4. 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

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