Πώς να χειρίζεστε ειδοποιήσεις και αναδυόμενα παράθυρα στο Selenium?

⚡ Έξυπνη Σύνοψη

Ειδοποιήσεις και αναδυόμενα παράθυρα σε Selenium are JavaΠαράθυρα διαλόγου σεναρίου και θυγατρικά παράθυρα που εμποδίζουν τη ροή αυτοματισμού. Αυτό το άρθρο εξηγεί πώς να αναγνωρίζετε απλές ειδοποιήσεις, ειδοποιήσεις άμεσης πρόσβασης και ειδοποιήσεις επιβεβαίωσης, να τις μεταβαίνετε με το WebDriver και να διαχειρίζεστε πολλά παράθυρα χρησιμοποιώντας το getWindowHandles().

  • 🔔 Βασικός Ορισμός: A Selenium η ειδοποίηση είναι μια JavaΠαράθυρο διαλόγου σεναρίου που εμφανίζεται πάνω από τη σελίδα και το οποίο πρέπει να αντιμετωπιστεί πριν από περαιτέρω ενέργειες.
  • 🗂️ Τρεις τύποι ειδοποιήσεων: Οι επιλογές Simple (πληροφορίες), Prompt (εισαγωγή κειμένου) και Confirmation (Ναι/Όχι) απαιτούν διαφορετικές κλήσεις WebDriver.
  • API ειδοποίησης: Χρησιμοποιήστε την συνάρτηση driver.switchTo().alert() με την συνάρτηση accept(), dismiss(), getText() και sendKeys() για να αλληλεπιδράσετε με το παράθυρο διαλόγου.
  • 🪟 Χειρισμός παραθύρων: Η getWindowHandle() επιστρέφει το τρέχον ID παραθύρου. Η getWindowHandles() επιστρέφει το πλήρες σύνολο για εναλλαγή.
  • 🚀 Selenium 4 Σημείωση: Selenium Το Manager επιλύει αυτόματα τα προγράμματα οδήγησης, καταργώντας την ανάγκη για ενσωματωμένες διαδρομές chromedriver.exe.
  • 🤖 Βοήθεια AI: Οι πράκτορες τεχνητής νοημοσύνης δημιουργούν σενάρια ειδοποιήσεων και παραθύρων με επίγνωση του εντοπιστή, μειώνοντας τον χειροκίνητο φόρτο εργασίας στις σουίτες δοκιμών.

Πώς να χειρίζεστε ειδοποιήσεις και αναδυόμενα παράθυρα στο Selenium

Τι είναι μια ειδοποίηση στο Selenium?

An Ειδοποίηση σε Selenium είναι ένα μικρό JavaΠαράθυρο διαλόγου σεναρίου που εμφανίζεται στην οθόνη για να δώσει στον χρήστη ορισμένες πληροφορίες ή ειδοποίηση. Μπορεί να επιβεβαιώσει μια συγκεκριμένη ενέργεια, να ζητήσει άδεια για την εκτέλεση μιας λειτουργίας ή να εμφανίσει ένα μήνυμα προειδοποίησης.

Σε αυτό το σεμινάριο, θα μάθετε πώς να χειρίζεστε τα αναδυόμενα παράθυρα σε Selenium και τους διαφορετικούς τύπους ειδοποιήσεων που βρίσκονται σε μια διαδικτυακή εφαρμογή δοκιμώνΘα δούμε επίσης πώς να χειριστούμε μια ειδοποίηση στο Selenium WebDriver και πώς να το αποδεχτείτε ή να το απορρίψετε ανάλογα με τον τύπο ειδοποίησης.

Τύποι ειδοποιήσεων σε Selenium

JavaΤο σενάριο εμφανίζει τρία παράθυρα διαλόγου ειδοποιήσεων που Selenium πρέπει να χειριστεί διαφορετικά.

1) Simple Alert

Η απλή ειδοποίηση εμφανίζει πληροφορίες ή μια προειδοποίηση στην οθόνη. Ο χρήστης μπορεί να την επιβεβαιώσει μόνο κάνοντας κλικ OK.

Παράδειγμα απλού παραθύρου διαλόγου ειδοποίησης στο πρόγραμμα περιήγησης

2) Prompt Alert

Η ειδοποίηση προτροπής ζητά από τον χρήστη να εισαγάγει δεδομένα. Selenium Το WebDriver μπορεί να το πληκτρολογήσει χρησιμοποιώντας sendKeys("input...").

Παράθυρο διαλόγου ειδοποίησης με πεδίο εισαγωγής

3) Confirmation Alert

Η ειδοποίηση επιβεβαίωσης ζητά από τον χρήστη να εγκρίνει ή να ακυρώσει μια λειτουργία. Εκθέτει και τα δύο OK Ματαίωση κουμπιά.

Παράθυρο διαλόγου ειδοποίησης επιβεβαίωσης με κουμπιά OK και Άκυρο

Πώς να χειριστείτε μια ειδοποίηση στο Selenium Πρόγραμμα οδήγησης Web

The Alert διεπαφή σε Selenium Πρόγραμμα οδήγησης Web αποκαλύπτει τέσσερις μεθόδους που καλύπτουν κάθε αλληλεπίδραση με ειδοποιήσεις.

  1. void dismiss() — κάνει κλικ στο Ματαίωση κουμπί.
driver.switchTo().alert().dismiss();
  1. void accept() — κάνει κλικ στο OK κουμπί.
driver.switchTo().alert().accept();
  1. Συμβολοσειρά getText() — καταγράφει το μήνυμα ειδοποίησης.
driver.switchTo().alert().getText();
  1. void sendKeys (String stringToSend) — πληκτρολογεί κείμενο σε μια προτρεπτική ειδοποίηση.
driver.switchTo().alert().sendKeys("Text");

Eclipse Η αυτόματη συμπλήρωση εμφανίζει τις διαθέσιμες μεθόδους ειδοποίησης μετά το typing alert. στη γραμμή επεξεργασίας. Μεταβείτε από το κύριο παράθυρο στην ειδοποίηση ανά πάσα στιγμή χρησιμοποιώντας Selenium'S .switchTo() μέθοδος.

Eclipse αυτόματη συμπλήρωση που εμφανίζει μεθόδους χειρισμού ειδοποιήσεων

Παράδειγμα που χρησιμοποιήθηκε: Διαγραφή επίδειξης πελάτη

Ας αυτοματοποιήσουμε το ακόλουθο σενάριο. Θα χρησιμοποιήσουμε το Guru99 ιστότοποι επίδειξης για επεξήγηση Selenium χειρισμός συναγερμού.

Βήμα 1) Εκκινήστε το πρόγραμμα περιήγησης και ανοίξτε https://demo.guru99.com/test/delete_customer.php.

Βήμα 2) Εισαγάγετε οποιοδήποτε αναγνωριστικό πελάτη.

Διαγραφή σελίδας επίδειξης πελάτη με πεδίο Αναγνωριστικό πελάτη

Βήμα 3) Κάντε κλικ στο Λήψη προσφοράς κουμπί.

Κουμπί υποβολής για ενεργοποίηση ειδοποίησης επιβεβαίωσης

Βήμα 4) Αποδοχή ή απόρριψη της ειδοποίησης επιβεβαίωσης που προκύπτει.

Ενεργοποίηση ειδοποίησης επιβεβαίωσης από ενέργεια διαγραφής

Selenium Java Code: Λαβή 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();
    }
}

Παραγωγή: Το πρόγραμμα περιήγησης ανοίγει τη σελίδα Διαγραφή πελάτη, υποβάλλει το αναγνωριστικό πελάτη, αποδέχεται την ειδοποίηση επιβεβαίωσης και καταργεί την εγγραφή από την εφαρμογή επίδειξης.

Πώς να χειριστείτε το αναδυόμενο παράθυρο Windows in Selenium Πρόγραμμα οδήγησης Web

Όταν ο αυτοματισμός πρέπει να λειτουργήσει σε πολλά παράθυρα του προγράμματος περιήγησης, η δοκιμή πρέπει να αλλάξει την εστίαση μεταξύ τους και να επιστρέψει στο γονικό παράθυρο μετά από κάθε λειτουργία. Selenium Το WebDriver παρουσιάζει δύο μεθόδους που το καθιστούν δυνατό.

driver.getWindowHandles()

Επιστρέφει ένα Set<String> κάθε λαβής ανοιχτού παραθύρου. Επαναλάβετε το σύνολο για να μεταβείτε από το κύριο παράθυρο σε οποιοδήποτε θυγατρικό παράθυρο στην εφαρμογή.

driver.getWindowHandle()

Επιστρέφει ένα String με τη μοναδική λαβή του τρέχοντος παραθύρου. Καταγράψτε αυτό πριν ανοίξετε οποιοδήποτε θυγατρικό παράθυρο, ώστε να μπορείτε να επιστρέψετε στο γονικό παράθυρο αργότερα.

Ακολουθήστε αυτά τα βήματα για να δείξετε τον χειρισμό παραθύρων σε σχέση με το Guru99 αναδυόμενο παράθυρο επίδειξης.

Παράδειγμα εργασίας: Εναλλαγή παραθύρων

Βήμα 1) Εκκινήστε το πρόγραμμα περιήγησης και ανοίξτε https://demo.guru99.com/popup.php.

Guru99 αναδυόμενες σελίδες επίδειξης

Βήμα 2) Κάντε κλικ στο Click Here σύνδεσμος. Ανοίγει ένα νέο θυγατρικό παράθυρο.

Άνοιγμα παραθύρου παιδιού από τον σύνδεσμο "Κάντε κλικ εδώ"

Βήμα 3) Το θυγατρικό παράθυρο ζητά από τον χρήστη να εισαγάγει ένα αναγνωριστικό email και να το υποβάλει.

Φόρμα εισαγωγής email θυγατρικού παραθύρου

Βήμα 4) Εισαγάγετε το αναγνωριστικό email και υποβάλετε.

Υποβολή email μέσα στο θυγατρικό παράθυρο

Βήμα 5) Η σελίδα εμφανίζει τα διαπιστευτήρια πρόσβασης που επιστράφηκαν από την επίδειξη.

Διαπιστευτήρια πρόσβασης που εμφανίζονται στο θυγατρικό παράθυρο

Μετά την εμφάνιση των διαπιστευτηρίων:

  1. Κλείστε το παράθυρο του παιδιού.

Κλείσιμο του θυγατρικού παραθύρου στο πρόγραμμα περιήγησης

  1. Αλλάξτε την εστίαση πίσω στο γονικό παράθυρο.

Επαναφορά της εστίασης στο γονικό παράθυρο

Selenium Java Code: Χειρισμός πολλαπλών 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();
    }
}

Παραγωγή: Η ιστοσελίδα εγκαινιάζεται, η Πατήστε εδώ Ο σύνδεσμος ανοίγει μια θυγατρική καρτέλα, Selenium εισάγει το email και το υποβάλλει, κλείνει το θυγατρικό παράθυρο και επιστρέφει στο γονικό παράθυρο.

Ολοκληρώθηκε η διαχείριση πολλαπλών παραθύρων σε Selenium

Συμπέρασμα

  • Ορίστηκαν τα τρία Selenium τύποι ειδοποιήσεων — απλοί, άμεσοι και επιβεβαιωτικοί — με ένα στιγμιότυπο οθόνης για τον καθένα.
  • Αποδεδειγμένος χειρισμός ειδοποιήσεων με το WebDriver Alert διεπαφή χρησιμοποιώντας ένα λειτουργικό σενάριο διαγραφής πελάτη.
  • Χειρίστηκε πολλά παράθυρα του προγράμματος περιήγησης καταγράφοντας λαβές με getWindowHandle() getWindowHandles() και εναλλαγή μεταξύ τους.

Συχνές Ερωτήσεις

Μια ειδοποίηση είναι εγγενής JavaΠαράθυρο διαλόγου σεναρίου που αναστέλλει τη σελίδα μέχρι να γίνει χειρισμός. Ένα αναδυόμενο παράθυρο είναι ένα νέο παράθυρο ή καρτέλα του προγράμματος περιήγησης. Οι ειδοποιήσεις χρησιμοποιούν switchTo().alert(). τα αναδυόμενα παράθυρα χρησιμοποιούν switchTo().window() με τη λαβή που επιστρέφεται από το getWindowHandles().

Η συνάρτηση NoAlertPresentException εμφανίζεται όταν εκτελείται η συνάρτηση switchTo().alert() αλλά δεν εμφανίζεται καμία ειδοποίηση αυτήν τη στιγμή. Τυλίξτε την κλήση με WebDriverWait μέχρι η συνάρτηση ExpectedConditions.alertIsPresent() να γίνει true για να δοθεί χρόνος στη σελίδα για να ενεργοποιήσει το παράθυρο διαλόγου.

Τα αναδυόμενα παράθυρα βασικής εξουσιοδότησης δεν είναι τυπικά JavaΕιδοποιήσεις σεναρίου. Μεταβιβάστε τα διαπιστευτήρια στη διεύθυνση URL (https://user:pass@site.com) ή χρησιμοποιήστε Selenium 4 CDP Network.setExtraHTTPHeaders. Για αναδυόμενα παράθυρα SSO, χρησιμοποιήστε το BrowserStack ή έναν καταχωρημένο χειριστή hasAuthentication.

Βοηθοί Τεχνητής Νοημοσύνης όπως AI Οι copilots κώδικα δημιουργούν χειριστές ειδοποιήσεων με επίγνωση εντοπισμού, προβλέπουν τις απαιτούμενες αναμονές και αναδιαμορφώνουν το brittle XPath. Επίσης, συντάσσουν δηλώσεις για κείμενο ειδοποιήσεων και διευθύνσεις URL θυγατρικών παραθύρων, επιταχύνοντας Selenium δημιουργία δοκιμής.

Ναι. Οι πλατφόρμες δοκιμών αυτο-επιδιόρθωσης χρησιμοποιούν Τεχνητή Νοημοσύνη για την ανίχνευση αλλαγών στο DOM, την αντικατάσταση προβληματικών εντοπιστών και την προσαρμογή των αναμονών όταν αλλάζουν ειδοποιήσεις ή αναδυόμενα παράθυρα. Αυτό μειώνει τη συντήρηση για Selenium σουίτες που λειτουργούν με συχνά ενημερωμένα front-ends.

Συνοψίστε αυτήν την ανάρτηση με: