En aquest tema, aprendrem com gestionar múltiples finestres del navegador i frames utilitzant Selenium WebDriver. Aquestes habilitats són essencials quan treballem amb aplicacions web que obren noves finestres o utilitzen frames per a la seva interfície d'usuari.
Conceptes Clau
-
Finestres del Navegador:
- Les aplicacions web poden obrir noves finestres o pestanyes del navegador.
- Selenium WebDriver permet canviar entre aquestes finestres per interactuar amb elements dins d'elles.
-
Frames:
- Un frame és una secció d'una pàgina web que pot carregar un document HTML separat.
- Els frames poden ser utilitzats per a mostrar contingut independent dins d'una pàgina web.
Gestió de Finestres del Navegador
Canviant entre Finestres
Quan una aplicació web obre una nova finestra, WebDriver pot canviar el focus a aquesta finestra utilitzant el seu identificador únic.
Exemple de Codi
// Obtenir l'identificador de la finestra actual String mainWindowHandle = driver.getWindowHandle(); // Codi per obrir una nova finestra // ... // Obtenir tots els identificadors de finestres Set<String> allWindowHandles = driver.getWindowHandles(); // Iterar sobre els identificadors de finestres for (String windowHandle : allWindowHandles) { if (!windowHandle.equals(mainWindowHandle)) { // Canviar a la nova finestra driver.switchTo().window(windowHandle); break; } } // Realitzar accions a la nova finestra // ... // Tornar a la finestra principal driver.switchTo().window(mainWindowHandle);
Tancant Finestres
Per tancar una finestra, simplement utilitza el mètode close()
després de canviar a la finestra desitjada.
// Tancar la finestra actual driver.close(); // Tornar a la finestra principal si cal driver.switchTo().window(mainWindowHandle);
Gestió de Frames
Canviant entre Frames
Per interactuar amb elements dins d'un frame, primer has de canviar el context de WebDriver al frame desitjat.
Exemple de Codi
// Canviar al frame utilitzant el nom o l'índex driver.switchTo().frame("frameName"); // o driver.switchTo().frame(0); // Realitzar accions dins del frame // ... // Tornar al context principal de la pàgina driver.switchTo().defaultContent();
Canviant a un Frame per WebElement
També pots canviar a un frame utilitzant un objecte WebElement
.
// Localitzar el frame com un WebElement WebElement frameElement = driver.findElement(By.tagName("iframe")); // Canviar al frame utilitzant el WebElement driver.switchTo().frame(frameElement); // Realitzar accions dins del frame // ... // Tornar al context principal de la pàgina driver.switchTo().defaultContent();
Exercicis Pràctics
Exercici 1: Canvi de Finestres
- Obre una pàgina web que obri una nova finestra.
- Canvia a la nova finestra i verifica el títol de la pàgina.
- Tanca la nova finestra i torna a la finestra original.
Exercici 2: Interacció amb Frames
- Accedeix a una pàgina web que contingui un frame.
- Canvia al frame i interactua amb un element dins d'ell.
- Torna al context principal i verifica un element fora del frame.
Solucions
Solució a l'Exercici 1
// Obtenir l'identificador de la finestra principal String mainWindowHandle = driver.getWindowHandle(); // Codi per obrir una nova finestra // ... // Obtenir tots els identificadors de finestres Set<String> allWindowHandles = driver.getWindowHandles(); for (String windowHandle : allWindowHandles) { if (!windowHandle.equals(mainWindowHandle)) { driver.switchTo().window(windowHandle); System.out.println("Títol de la nova finestra: " + driver.getTitle()); driver.close(); break; } } // Tornar a la finestra principal driver.switchTo().window(mainWindowHandle);
Solució a l'Exercici 2
// Canviar al frame utilitzant el nom driver.switchTo().frame("frameName"); // Interactuar amb un element dins del frame WebElement elementInFrame = driver.findElement(By.id("elementId")); elementInFrame.click(); // Tornar al context principal driver.switchTo().defaultContent(); // Verificar un element fora del frame WebElement elementOutsideFrame = driver.findElement(By.id("outsideElementId")); assertTrue(elementOutsideFrame.isDisplayed());
Conclusió
La gestió de finestres del navegador i frames és una part fonamental de l'automatització de proves amb Selenium. Amb la pràctica, seràs capaç de manejar escenaris complexos que involucren múltiples finestres i frames, millorant així la robustesa dels teus scripts de prova. En el següent tema, explorarem la sincronització en Selenium per assegurar que les nostres proves s'executin de manera fiable.
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