Comment gérer les alertes et les fenêtres contextuelles dans Selenium?

⚡ Résumé intelligent

Alertes et fenêtres contextuelles dans Selenium Ces JavaCe document explique comment identifier les alertes simples, les invites et les confirmations, comment basculer entre elles avec WebDriver et comment gérer plusieurs fenêtres à l'aide de la méthode `getWindowHandles()`.

  • (I.e. Définition principale : A Selenium L'alerte est une JavaBoîte de dialogue de script affichée en haut de la page, qui doit être traitée avant toute autre action.
  • 🇧🇷 Trois types d'alertes : Les types Simple (info), Prompt (saisie de texte) et Confirmation (Oui/Non) nécessitent chacun des appels WebDriver différents.
  • API d'alerte : Utilisez driver.switchTo().alert() avec accept(), dismiss(), getText() et sendKeys() pour interagir avec la boîte de dialogue.
  • 🪟 Manipulation des fenêtres : La fonction getWindowHandle() renvoie l'identifiant de la fenêtre actuelle ; la fonction getWindowHandles() renvoie l'ensemble complet des fenêtres à basculer.
  • 🚀 Selenium 4 Note: Selenium Le gestionnaire résout automatiquement les problèmes de pilotes, éliminant ainsi le besoin de saisir manuellement le chemin d'accès à chromedriver.exe.
  • 🤖 Assistance IA : Les agents d'IA génèrent des scripts d'alerte et de fenêtre prenant en compte la localisation, réduisant ainsi le travail manuel dans les suites de tests.

Comment gérer les alertes et les fenêtres contextuelles dans Selenium

Qu'est-ce qu'une alerte ? Selenium?

An Alerte dans Selenium est un petit JavaBoîte de dialogue de script s'affichant à l'écran pour fournir à l'utilisateur des informations ou une notification. Elle peut confirmer une action spécifique, demander l'autorisation d'effectuer une opération ou afficher un message d'avertissement.

Dans ce tutoriel, vous apprendrez à gérer les popups dans Selenium et les différents types d'alertes rencontrées dans une application web vers les testsNous verrons également comment gérer une alerte dans Selenium WebDriver et comment l'accepter ou le refuser en fonction du type d'alerte.

Types d'alertes dans Selenium

JavaLe script affiche trois boîtes de dialogue d'alerte qui Selenium doit être traité différemment.

1) Simple Alert

L'alerte simple affiche des informations ou un avertissement à l'écran. L'utilisateur ne peut la confirmer qu'en cliquant. OK.

Exemple simple de boîte de dialogue d'alerte dans le navigateur

2) Prompt Alert

Le message d'alerte invite l'utilisateur à saisir des informations. Selenium WebDriver peut y saisir du texte en utilisant sendKeys("input...").

Boîte de dialogue d'alerte avec champ de saisie

3) Confirmation Alert

L'alerte de confirmation demande à l'utilisateur d'approuver ou d'annuler une opération. Elle expose les deux OK et Annuler boutons.

Boîte de dialogue de confirmation avec boutons OK et Annuler

Comment gérer une alerte dans Selenium pilote web

Le Alert interface dans Selenium pilote web expose quatre méthodes qui couvrent chaque interaction avec les alertes.

  1. annuler le rejet() — clique sur le Annuler .
driver.switchTo().alert().dismiss();
  1. annuler accepter() — clique sur le OK .
driver.switchTo().alert().accept();
  1. Chaîne getText() — capture le message d'alerte.
driver.switchTo().alert().getText();
  1. void sendKeys (String stringToSend) — saisit du texte dans une alerte.
driver.switchTo().alert().sendKeys("Text");

Eclipse La fonction de saisie semi-automatique affiche les méthodes d'alerte disponibles après la saisie.ping alert. sur la ligne de l'éditeur. Basculez de la fenêtre principale à l'alerte à tout moment en utilisant Selenium's .basculer vers() méthode.

Eclipse Saisie semi-automatique affichant les méthodes de gestion des alertes

Exemple concret : Suppression de la démo client

Automatisons le scénario suivant. Nous utiliserons le Guru99 sites de démonstration pour illustrer Selenium Gestion des alertes.

Étape 1) Lancez le navigateur et ouvrez https://demo.guru99.com/test/delete_customer.php.

Étape 2) Veuillez saisir un identifiant client.

Supprimer la page de démonstration client avec le champ ID client

Étape 3) Cliquez sur Soumettre .

Bouton Soumettre pour déclencher l'alerte de confirmation

Étape 4) Acceptez ou ignorez l'alerte de confirmation qui s'affiche.

Alerte de confirmation déclenchée par une action de suppression

Selenium Java Code: Gérer Confirmation Alert

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;

public class AlertDemo {

    public static void main(String[] args) throws NoAlertPresentException, InterruptedException {
        // Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
        WebDriver driver = new ChromeDriver();

        // Open the Delete Customer demo page
        driver.get("https://demo.guru99.com/test/delete_customer.php");

        driver.findElement(By.name("cusid")).sendKeys("53920");
        driver.findElement(By.name("submit")).submit();

        // Switch to the confirmation alert
        Alert alert = driver.switchTo().alert();

        // Capture the alert message
        String alertMessage = alert.getText();
        System.out.println(alertMessage);
        Thread.sleep(5000);

        // Accept the alert
        alert.accept();

        driver.quit();
    }
}

Sortie : Le navigateur ouvre la page « Supprimer le client », saisit l’identifiant du client, accepte l’alerte de confirmation et supprime l’enregistrement de l’application de démonstration.

Comment gérer les fenêtres contextuelles Windows in Selenium pilote web

Lorsque l'automatisation doit fonctionner sur plusieurs fenêtres de navigateur, le test doit alterner entre elles et revenir à la fenêtre parente après chaque opération. Selenium WebDriver expose deux méthodes qui rendent cela possible.

pilote.getWindowHandles()

Renvoie un Set<String> de chaque poignée de fenêtre ouverte. Parcourez l'ensemble pour passer de la fenêtre principale à n'importe quelle fenêtre enfant de l'application.

driver.getWindowHandle()

Renvoie un String avec l'identifiant unique de la fenêtre actuelle. Notez-le avant d'ouvrir une fenêtre enfant afin de pouvoir revenir à la fenêtre parente ultérieurement.

Suivez ces étapes pour démontrer la gestion des fenêtres par rapport à Guru99 démos popup.

Exemple pratique : Changement de fenêtre

Étape 1) Lancez le navigateur et ouvrez https://demo.guru99.com/popup.php.

Gurupage de destination de démonstration popup 99

Étape 2) Cliquez sur Cliquez ici lien. Une nouvelle fenêtre enfant s'ouvre.

Ouverture de la fenêtre enfant via le lien Cliquez ici

Étape 3) La fenêtre enfant invite l'utilisateur à saisir une adresse électronique et à soumettre le formulaire.

Formulaire de saisie d'e-mail pour fenêtre enfant

Étape 4) Saisissez votre adresse e-mail et soumettez.

Envoi d'e-mail dans la fenêtre enfant

Étape 5) Cette page affiche les identifiants d'accès renvoyés par la démonstration.

Identifiants d'accès affichés dans la fenêtre enfant

Après l'affichage des identifiants :

  1. Fermez la fenêtre enfant.

Fermer la fenêtre enfant dans le navigateur

  1. Revenez à la fenêtre parente.

Revenir à la fenêtre parente

Selenium Java CodeGérer plusieurs Windows

import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class WindowHandle_Demo {

    public static void main(String[] args) throws InterruptedException {
        // Selenium 4 auto-resolves the browser driver via Selenium Manager
        WebDriver driver = new FirefoxDriver();

        driver.get("https://demo.guru99.com/popup.php");
        driver.manage().window().maximize();

        driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();

        String mainWindow = driver.getWindowHandle();

        // Capture every open window handle
        Set<String> allWindows = driver.getWindowHandles();
        Iterator<String> iterator = allWindows.iterator();

        while (iterator.hasNext()) {
            String childWindow = iterator.next();

            if (!mainWindow.equalsIgnoreCase(childWindow)) {
                // Switch to the child window
                driver.switchTo().window(childWindow);
                driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
                driver.findElement(By.name("btnLogin")).click();

                // Close the child window
                driver.close();
            }
        }
        // Return focus to the main window
        driver.switchTo().window(mainWindow);
        driver.quit();
    }
}

Sortie : Le site est lancé, le Cliquez ici Le lien ouvre un onglet enfant. Selenium Il saisit l'adresse électronique et la soumet, ferme la fenêtre enfant et retourne à la fenêtre parente.

Gestion de plusieurs fenêtres terminée dans Selenium

Conclusion

  • Défini les trois Selenium Types d'alertes — simple, rapide et de confirmation — avec une capture d'écran pour chacune.
  • Gestion des alertes démontrée avec WebDriver Alert interface utilisant un scénario de suppression de client fonctionnel.
  • Gestion de plusieurs fenêtres de navigateur par capture de descripteurs avec getWindowHandle() et getWindowHandles() et en passant de l'un à l'autre.

FAQ

Une alerte est native JavaBoîte de dialogue de script qui suspend la page jusqu'à son traitement. Une fenêtre contextuelle est une nouvelle fenêtre ou un nouvel onglet du navigateur. Les alertes utilisent `switchTo().alert()` ; les fenêtres contextuelles utilisent `switchTo().window()` avec le descripteur renvoyé par `getWindowHandles()`.

L'exception NoAlertPresentException est levée lorsque switchTo().alert() est exécuté alors qu'aucune alerte n'est affichée. Encapsulez l'appel dans WebDriverWait jusqu'à ce que ExpectedConditions.alertIsPresent() renvoie vrai afin de laisser à la page le temps d'afficher la boîte de dialogue.

Les fenêtres contextuelles d'authentification de base ne sont pas standard. JavaAlertes de script. Transmettez les identifiants dans le URL (https://user:pass@site.com) ou utilisez Selenium 4. CDP Network.setExtraHTTPHeaders. Pour les fenêtres contextuelles SSO, utilisez BrowserStack ou un gestionnaire hasAuthentication enregistré.

Les assistants IA tels que AI Les copilotes de code génèrent des gestionnaires d'alertes prenant en compte les localisateurs, prévoient les temps d'attente nécessaires et refactorisent les XPath fragiles. Ils rédigent également des assertions pour le texte des alertes et les fenêtres enfants. URLs, accélérant Selenium Création de test.

Oui. Les plateformes de test auto-réparatrices utilisent l'IA pour détecter les modifications du DOM, remplacer les localisateurs défectueux et ajuster les temps d'attente lorsque des alertes ou des fenêtres contextuelles changent. Cela réduit la maintenance. Selenium Des suites logicielles s'exécutent sur des interfaces fréquemment mises à jour.

Résumez cet article avec :