अलर्ट और पॉपअप को कैसे संभालें Selenium?

⚡ स्मार्ट सारांश

अलर्ट और पॉपअप में Selenium रहे Javaस्क्रिप्ट डायलॉग और चाइल्ड विंडो जो ऑटोमेशन प्रवाह को बाधित करते हैं। यह लेख बताता है कि सरल, प्रॉम्प्ट और पुष्टिकरण अलर्ट की पहचान कैसे करें, वेबड्राइवर का उपयोग करके उनमें कैसे स्विच करें और getWindowHandles() का उपयोग करके कई विंडो को कैसे प्रबंधित करें।

  • 🔔 मूल परिभाषा: A Selenium अलर्ट एक है Javaपृष्ठ के ऊपर प्रदर्शित स्क्रिप्ट डायलॉग बॉक्स को आगे की कार्रवाई से पहले संभालना आवश्यक है।
  • तीन प्रकार की चेतावनियाँ: सिंपल (जानकारी), प्रॉम्प्ट (टेक्स्ट इनपुट) और कन्फर्मेशन (हां/नहीं) में से प्रत्येक के लिए अलग-अलग वेबड्राइवर कॉल की आवश्यकता होती है।
  • अलर्ट एपीआई: डायलॉग बॉक्स के साथ इंटरैक्ट करने के लिए driver.switchTo().alert() का उपयोग accept(), dismiss(), getText() और sendKeys() के साथ करें।
  • 🪟 विंडो हैंडलिंग: getWindowHandle() वर्तमान विंडो आईडी लौटाता है; getWindowHandles() स्विच करने के लिए पूरा सेट लौटाता है।
  • 🚀 Selenium 4 नोट: Selenium मैनेजर स्वचालित रूप से ड्राइवरों का समाधान करता है, जिससे हार्ड-कोडेड chromedriver.exe पथों की आवश्यकता समाप्त हो जाती है।
  • 🤖 एआई सहायता: एआई एजेंट लोकेटर-जागरूक अलर्ट और विंडो स्क्रिप्ट उत्पन्न करते हैं, जिससे टेस्ट सूट में मैन्युअल स्कैफोल्डिंग कम हो जाती है।

अलर्ट और पॉपअप को कैसे संभालें Selenium

अलर्ट क्या होता है? Selenium?

An में अलर्ट Selenium एक छोटा सा है Javaस्क्रीन पर दिखाई देने वाला स्क्रिप्ट डायलॉग बॉक्स जो उपयोगकर्ता को कुछ जानकारी या सूचना देता है। यह किसी विशिष्ट कार्रवाई की पुष्टि कर सकता है, किसी ऑपरेशन को करने की अनुमति मांग सकता है, या चेतावनी संदेश प्रदर्शित कर सकता है।

इस ट्यूटोरियल में आप सीखेंगे कि पॉपअप को कैसे हैंडल किया जाता है। Selenium और वेब एप्लिकेशन में पाए जाने वाले विभिन्न प्रकार के अलर्ट परीक्षणहम यह भी देखेंगे कि अलर्ट को कैसे हैंडल किया जाता है। Selenium वेबड्राइवर और अलर्ट के प्रकार के आधार पर इसे स्वीकार या अस्वीकार करने का तरीका।

अलर्ट के प्रकार Selenium

Javaस्क्रिप्ट तीन अलर्ट डायलॉग प्रदर्शित करती है जो Selenium इसे अलग तरीके से संभालना होगा।

1) Simple Alert

यह साधारण अलर्ट स्क्रीन पर जानकारी या चेतावनी प्रदर्शित करता है। उपयोगकर्ता इसे केवल क्लिक करके ही स्वीकार कर सकता है। OK.

ब्राउज़र में सरल अलर्ट डायलॉग का उदाहरण

2) Prompt Alert

प्रॉम्प्ट अलर्ट उपयोगकर्ता से इनपुट मांगता है। Selenium वेबड्राइवर इसका उपयोग करके इसमें टाइप कर सकता है sendKeys("input...").

इनपुट फ़ील्ड के साथ त्वरित चेतावनी संवाद बॉक्स

3) Confirmation Alert

पुष्टि अलर्ट उपयोगकर्ता से किसी ऑपरेशन को स्वीकृत या रद्द करने के लिए कहता है। यह दोनों विकल्पों को उजागर करता है। OK और रद्द करना बटन।

पुष्टिकरण चेतावनी संवाद बॉक्स जिसमें ओके और कैंसिल बटन हैं

अलर्ट को कैसे हैंडल करें Selenium वेबड्राइवर

RSI Alert में इंटरफ़ेस Selenium वेबड्राइवर यह लेख चार ऐसे तरीकों का खुलासा करता है जो अलर्ट के साथ होने वाली हर तरह की बातचीत को कवर करते हैं।

  1. शून्य खारिज() — क्लिक करता है रद्द करना बटन.
driver.switchTo().alert().dismiss();
  1. शून्य स्वीकार() — क्लिक करता है OK बटन.
driver.switchTo().alert().accept();
  1. स्ट्रिंग getText() — अलर्ट संदेश को कैप्चर करता है।
driver.switchTo().alert().getText();
  1. शून्य sendKeys(स्ट्रिंग stringToSend) — प्रॉम्प्ट अलर्ट में टेक्स्ट टाइप करता है।
driver.switchTo().alert().sendKeys("Text");

Eclipse ऑटो-कंप्लीट टाइप करने के बाद उपलब्ध अलर्ट विधियां दिखाता है।ping alert. एडिटर लाइन पर। मुख्य विंडो से अलर्ट विंडो में किसी भी समय स्विच करें। Seleniumहै ।पर स्विच() विधि.

Eclipse अलर्ट हैंडलिंग विधियों को दर्शाने वाला ऑटो-कंप्लीट

उदाहरण: ग्राहक डेमो हटाएं

आइए निम्नलिखित परिदृश्य को स्वचालित करें। हम इसका उपयोग करेंगे। Guruउदाहरण के लिए 99 डेमो साइट 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 वेबड्राइवर

जब ऑटोमेशन को कई ब्राउज़र विंडो में काम करना होता है, तो परीक्षण को उनके बीच फोकस बदलना पड़ता है और प्रत्येक ऑपरेशन के बाद पैरेंट विंडो पर वापस लौटना पड़ता है। Selenium वेबड्राइवर दो ऐसे तरीके प्रदान करता है जिनसे यह संभव हो पाता है।

ड्राइवर.गेटविंडोहैंडल्स()

रिटर्न ए Set<String> प्रत्येक खुली विंडो के हैंडल का सेट। एप्लिकेशन में मुख्य विंडो से किसी भी चाइल्ड विंडो पर स्विच करने के लिए सेट पर पुनरावृति करें।

ड्राइवर.getWindowHandle()

रिटर्न ए String वर्तमान विंडो के विशिष्ट हैंडल के साथ। किसी भी चाइल्ड विंडो को खोलने से पहले इसे कैप्चर कर लें ताकि बाद में आप पेरेंट विंडो पर वापस जा सकें।

विंडो हैंडलिंग का प्रदर्शन करने के लिए इन चरणों का पालन करें। Guru99 पॉपअप डेमो।

उदाहरण सहित: विंडो स्विचिंग

चरण 1) ब्राउज़र लॉन्च करें और खोलें https://demo.guru99.com/popup.php.

Guru99 पॉपअप डेमो लैंडिंग पेज

चरण 2) दबाएं यहाँ क्लिक करें लिंक। एक नई चाइल्ड विंडो खुलती है।

यहां क्लिक करें लिंक से चाइल्ड विंडो खुल रही है

चरण 3) चाइल्ड विंडो उपयोगकर्ता को ईमेल आईडी दर्ज करने और सबमिट करने के लिए कहती है।

चाइल्ड विंडो ईमेल इनपुट फॉर्म

चरण 4) ईमेल आईडी दर्ज करें और सबमिट करें।

चाइल्ड विंडो के अंदर ईमेल सबमिशन करें

चरण 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 ईमेल दर्ज करता है और सबमिट करता है, चाइल्ड विंडो बंद करता है और पेरेंट विंडो पर वापस लौटता है।

एकाधिक विंडो हैंडलिंग पूरी हो गई Selenium

निष्कर्ष

  • तीनों को परिभाषित किया Selenium अलर्ट के प्रकार — सरल, त्वरित और पुष्टि — प्रत्येक के लिए एक स्क्रीनशॉट के साथ।
  • वेबड्राइवर के साथ अलर्ट हैंडलिंग का प्रदर्शन किया गया Alert एक कार्यशील ग्राहक हटाने के परिदृश्य का उपयोग करके इंटरफ़ेस।
  • हैंडल कैप्चर करके कई ब्राउज़र विंडो को हैंडल किया गया getWindowHandle() और getWindowHandles() और उनके बीच स्विच करना।

अक्सर पूछे जाने वाले प्रश्न

अलर्ट एक मूल Javaस्क्रिप्ट डायलॉग जो हैंडल किए जाने तक पेज को निलंबित रखता है। पॉपअप विंडो एक नई ब्राउज़र विंडो या टैब होती है। अलर्ट के लिए switchTo().alert() का उपयोग किया जाता है; पॉपअप के लिए getWindowHandles() द्वारा लौटाए गए हैंडल के साथ switchTo().window() का उपयोग किया जाता है।

NoAlertPresentException तब उत्पन्न होता है जब switchTo().alert() चलता है लेकिन वर्तमान में कोई अलर्ट प्रदर्शित नहीं हो रहा होता है। पेज को डायलॉग ट्रिगर करने के लिए समय देने हेतु, ExpectedConditions.alertIsPresent() के सत्य होने तक कॉल को WebDriverWait से घेरें।

बेसिक-ऑथ पॉपअप मानक नहीं हैं Javaस्क्रिप्ट अलर्ट। URL (https://user:pass@site.com) में क्रेडेंशियल पास करें या उपयोग करें Selenium 4. CDP Network.setExtraHTTPHeaders. SSO पॉपअप के लिए, BrowserStack या पंजीकृत hasAuthentication हैंडलर का उपयोग करें।

एआई सहायक जैसे कि AI कोड कोपायलट लोकेटर-जागरूक अलर्ट हैंडलर उत्पन्न करते हैं, आवश्यक प्रतीक्षा का अनुमान लगाते हैं, और कमजोर XPath को रिफैक्टर करते हैं। वे अलर्ट टेक्स्ट और चाइल्ड विंडो URL के लिए अभिकथन भी तैयार करते हैं, जिससे गति बढ़ती है। Selenium परीक्षण निर्माण।

जी हां। सेल्फ-हीलिंग टेस्ट प्लेटफॉर्म DOM में बदलाव का पता लगाने, टूटे हुए लोकेटर को बदलने और अलर्ट या पॉपअप के शिफ्ट होने पर प्रतीक्षा समय को समायोजित करने के लिए AI का उपयोग करते हैं। इससे रखरखाव कम हो जाता है। Selenium ऐसे सूट जो लगातार अपडेट होने वाले फ्रंट एंड के साथ चलते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: