वेबएलिमेंट Selenium

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

वेबएलिमेंट Selenium यह प्रत्येक फॉर्म कंट्रोल को एक प्रोग्रामेबल ऑब्जेक्ट के रूप में दर्शाता है, जिससे परीक्षकों को findElement, sendKeys, click, clear और submit विधियों का उपयोग करके टेक्स्ट फ़ील्ड, चेकबॉक्स, रेडियो बटन और सबमिट तत्वों के साथ इंटरैक्ट करने में सक्षम बनाता है। Java कोड उदाहरण.

  • 🧩 लोकेटर परिशुद्धता: DOM के साथ स्थिर अंतःक्रिया सुनिश्चित करने के लिए findElement() फ़ंक्शन का उपयोग करके id, नाम, xpath या CSS चयनकर्ता द्वारा फ़ॉर्म तत्वों की पहचान करें।
  • ✍️ इनपुट हैंडलिंग: स्वचालित निष्पादन के दौरान मौजूदा मानों को ओवरराइट किए बिना sendKeys() का उपयोग करके फ़ील्ड में संपादन योग्य टेक्स्ट भेजें।
  • 🧹 फ़ील्ड रीसेट: डेटा को दोबारा दर्ज करने से पहले clear() विधि के माध्यम से इनपुट बॉक्स को साफ़ करें, जिससे बाद के दावों में अवशिष्ट मानों को रोका जा सके।
  • बटन की परस्पर क्रिया: मिलान करने वाले वेबएलिमेंट संदर्भ पर क्लिक() विधि के माध्यम से साइन-इन या नेविगेशन क्रियाओं को ट्रिगर करें।
  • 📨 फॉर्म जमा करना: फॉर्म के भीतर किसी भी एलिमेंट पर submit() का उपयोग करें ताकि वेबड्राइवर स्वचालित रूप से उसके पैरेंट फॉर्म सबमिट हैंडलर को डिस्पैच कर दे।
  • स्थिरता संबंधी सुझाव: डायनामिक रूप से लोड किए गए पेजों पर NoSuchElementException को रोकने के लिए findElement() कॉल से पहले इम्प्लिसिट या एक्सप्लिसिट वेट जोड़ें।

वेबएलिमेंट Selenium

वेबएलिमेंट Selenium

फॉर्म वेबसाइट के मूलभूत तत्व हैं जो वेबसाइट पर आने वाले आगंतुकों से जानकारी प्राप्त करते हैं। वेब फॉर्म में टेक्स्ट बॉक्स, पासवर्ड फ़ील्ड, चेकबॉक्स, रेडियो बटन, ड्रॉपडाउन और फ़ाइल इनपुट जैसे विभिन्न GUI नियंत्रण शामिल होते हैं।

यह ट्यूटोरियल बताता है कि प्रत्येक फॉर्म एलिमेंट को कैसे एक्सेस किया जाए। Selenium वेबड्राइवर के साथ Java. Selenium प्रत्येक फॉर्म तत्व को WebElement के ऑब्जेक्ट के रूप में समाहित करता है। यह API का उपयोग करके तत्वों का पता लगाता है और उन पर कार्रवाई करता है, जिसमें टेक्स्ट दर्ज करना, बटन पर क्लिक करना और फॉर्म सबमिट करना शामिल है। नीचे दिए गए अनुभाग प्रत्येक फॉर्म तत्व के लिए उपलब्ध विधियों को कवर करते हैं।

वेबएलिमेंट का परिचय FindElement,FindElements

वेबएलिमेंट का परिचय, findElement(), findElements()

Selenium WebDriver एक साधारण फॉर्म तत्व को ऑब्जेक्ट के रूप में दर्शाता है। वेबएलिमेंट.

वेबड्राइवर फॉर्म तत्वों की पहचान वेब तत्व के विभिन्न गुणों का उपयोग करके करता है, जिनमें आईडी, नाम, क्लास आदि शामिल हैं। एक्सपाथटैगनाम, सीएसएस चयनकर्ता और लिंक टेक्स्ट।

WebDriver तत्वों को खोजने के लिए निम्नलिखित दो WebElement विधियाँ प्रदान करता है:

  • तत्व खोजें() – एक वेब एलिमेंट को ढूंढता है और उसे वेबएलिमेंट के रूप में लौटाता है Selenium वस्तु।
  • तत्व खोजें() - लोकेटर मानदंड से मेल खाने वाले WebElement ऑब्जेक्ट्स की एक सूची लौटाता है।

नीचे दिए गए उदाहरण में दिखाया गया है कि findElement() विधि का उपयोग करके वेब पेज पर मौजूद टेक्स्ट फ़ील्ड जैसे किसी एक एलिमेंट को WebElement ऑब्जेक्ट के रूप में कैसे प्राप्त किया जाता है। एकाधिक एलिमेंट खोजने के लिए findElements() विधि के उपयोग के बारे में आगे के ट्यूटोरियल में बताया जाएगा।

चरण 1) वेबएलिमेंट ऑब्जेक्ट बनाने के लिए आवश्यक पैकेज आयात करें।

चरण 2) नीचे दिखाए गए अनुसार, WebDriver क्लास में उपलब्ध findElement() मेथड को कॉल करके एक WebElement ऑब्जेक्ट प्राप्त करें।

Selenium इनपुट टेक्स्ट

इनपुट बॉक्स इन दो प्रकारों में से किसी एक को संदर्भित करते हैं:

  1. टेक्स्ट फ़ील्ड - Selenium इनपुट टेक्स्ट बॉक्स जो टाइप किए गए मानों को स्वीकार करते हैं और उन्हें ठीक उसी रूप में प्रदर्शित करते हैं जैसे दर्ज किए गए हैं।
  2. पासवर्ड फ़ील्ड – ऐसे टेक्स्ट बॉक्स जो टाइप किए गए मानों को स्वीकार करते हैं लेकिन संवेदनशील इनपुट को छिपाने के लिए उन्हें विशेष वर्णों (आमतौर पर बिंदु या तारांकन चिह्न) की एक श्रृंखला के रूप में छिपा देते हैं।

    Selenium इनपुट टेक्स्ट

लोकेटर

findElement() विधि एक पैरामीटर लेती है, जो कि एलिमेंट को इंगित करने वाला लोकेटर होता है। By.id(), By.name(), By.xpath() और By.cssSelector() सहित विभिन्न लोकेटर, id, name या path जैसी प्रॉपर्टीज़ का उपयोग करके पेज पर एलिमेंट ढूंढते हैं।

आप एलिमेंट्स के लिए आईडी, एक्सपाथ और अन्य लोकेटर वैल्यू प्राप्त करने के लिए फायरपाथ जैसे प्लगइन का उपयोग कर सकते हैं।

उदाहरण साइट का उपयोग करना https://demo.guru99.com/test/login.htmlनीचे दिया गया कोड आईडी लोकेटर का उपयोग करके "ईमेल पता" टेक्स्ट फ़ील्ड और नाम लोकेटर का उपयोग करके "पासवर्ड" फ़ील्ड का पता लगाता है।

लोकेटर

  1. ईमेल टेक्स्ट फ़ील्ड को आईडी द्वारा खोजा जा सकता है।
  2. पासवर्ड फ़ील्ड नाम के आधार पर स्थित है।

सेंडकीज़ इन Selenium

sendKeys() में Selenium यह विधि परीक्षण निष्पादन के दौरान टेक्स्ट और पासवर्ड फ़ील्ड में संपादन योग्य सामग्री दर्ज करने के लिए उपयोग की जाती है। इन फ़ील्ड्स को नाम, क्लास और आईडी जैसे लोकेटरों द्वारा पहचाना जाता है। यह विधि WebElement ऑब्जेक्ट पर उपलब्ध है। टाइप विधि के विपरीत, sendKeys() टेक्स्ट बॉक्स में मौजूदा टेक्स्ट को प्रतिस्थापित नहीं करती है।

टेक्स्ट कैसे दर्ज करें Selenium

टेक्स्ट फ़ील्ड और पासवर्ड फ़ील्ड में टेक्स्ट दर्ज करने के लिए, webElement पर उपलब्ध sendKeys() विधि का उपयोग किया जाता है। Selenium.

इसी उदाहरण का उपयोग करते हुए https://demo.guru99.com/test/login.htmlनीचे दिया गया कोड टेक्स्ट फ़ील्ड और पासवर्ड फ़ील्ड का पता लगाता है और उनमें टेक्स्ट दर्ज करता है। Selenium.

में पाठ Selenium

  1. आईडी लोकेटर का उपयोग करके "ईमेल पता" टेक्स्ट फ़ील्ड ढूंढें।
  2. नेम लोकेटर का उपयोग करके "पासवर्ड" फ़ील्ड ढूंढें।
  3. "ईमेल पता" में पाठ दर्ज करें Selenium sendKeys विधि।
  4. sendKeys() विधि का उपयोग करके “पासवर्ड” फ़ील्ड में पासवर्ड दर्ज करें।

इनपुट में मान हटाना Boxes

RSI स्पष्ट() यह विधि इनपुट बॉक्स के अंदर के टेक्स्ट को डिलीट करती है। इस विधि में पैरामीटर की आवश्यकता नहीं होती है। नीचे दिया गया कोड स्निपेट ईमेल या पासवर्ड फ़ील्ड से टेक्स्ट को हटा देता है।

इनपुट में मान हटाना Boxes

Selenium बटन क्लिक करें

RSI Selenium क्लिक बटन को क्लिक() विधि का उपयोग करके एक्सेस किया जाता है।

उपरोक्त उदाहरण में

  1. लॉग इन करने के लिए बटन ढूंढें।
  2. प्रमाणीकरण के लिए साइट के लॉगिन पेज पर "साइन-इन" बटन पर क्लिक करें।

Selenium बटन क्लिक करें

Selenium सबमिट बटन

सबमिट बटन पूरे फॉर्म को सर्वर पर भेज देता है। आप या तो ऊपर दिखाए गए तरीके से वेबएलिमेंट पर क्लिक() मेथड को कॉल कर सकते हैं, या फॉर्म के किसी भी एलिमेंट पर या सबमिट बटन पर ही सबमिट() मेथड का उपयोग कर सकते हैं।

Selenium सबमिट बटन

जब submit() फ़ंक्शन का उपयोग किया जाता है, तो WebDriver DOM में उस फ़ॉर्म की पहचान करने के लिए देखता है जिससे वह तत्व संबंधित है और फिर उसके सबमिट फ़ंक्शन को ट्रिगर करता है।

पूर्ण Code

यह रहा पूरा कार्यशील कोड।

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

समस्या निवारण

यदि आपको एलिमेंट ढूंढते समय NoSuchElementException() की समस्या आती है, तो इसका मतलब है कि जिस समय वेबड्राइवर ने उस एलिमेंट को एक्सेस किया, उस समय वह पेज पर मौजूद नहीं था।

  1. फायरपाथ या क्रोम में 'इंस्पेक्ट एलिमेंट' विकल्प का उपयोग करके अपने लोकेटर की दोबारा जांच करें।
  2. जांचें कि कोड में उपयोग किया गया मान फायरपाथ में दिखाई देने वाले तत्व के वर्तमान मान से भिन्न है या नहीं।
  3. कुछ तत्वों के लिए कुछ विशेषताएँ गतिशील होती हैं। यदि कोई मान गतिशील रूप से बदलता है, तो By.xpath() या By.cssSelector() का उपयोग करें, जो अधिक विश्वसनीय हैं लेकिन थोड़े अधिक जटिल हैं।
  4. कभी-कभी समस्या प्रतीक्षा की स्थिति के कारण होती है; वेबड्राइवर पेज के पूरी तरह लोड होने से पहले ही कोड को निष्पादित कर सकता है।
  5. अंतर्निहित या स्पष्ट प्रतीक्षा का उपयोग करके findElement() से पहले प्रतीक्षा जोड़ें।

सारांश

  • नीचे दी गई तालिका में ऊपर चर्चा किए गए प्रत्येक प्रकार के तत्व तक पहुँचने के लिए आवश्यक कमांड का सारांश दिया गया है।
तत्व आदेश विवरण
निवेश Box sendKeys () टेक्स्ट बॉक्स में मान दर्ज करने के लिए उपयोग किया जाता है।
स्पष्ट() टेक्स्ट बॉक्स से उनके वर्तमान मान को हटाने के लिए उपयोग किया जाता है।
लिंक क्लिक करें() इसका उपयोग लिंक पर क्लिक करने और अगले कमांड पर आगे बढ़ने से पहले पेज के लोड होने की प्रतीक्षा करने के लिए किया जाता था।
बटन सबमिट करें जमा करना() इसका उपयोग पैरेंट फॉर्म के सबमिट हैंडलर को ट्रिगर करके फॉर्म सबमिट करने के लिए किया जाता है।
  • वेबड्राइवर एकाधिक SELECT तत्व में एक से अधिक विकल्पों के चयन की अनुमति देता है।
  • आप फॉर्म के किसी भी एलिमेंट पर submit() मेथड का उपयोग कर सकते हैं। WebDriver स्वचालित रूप से उस फॉर्म के सबमिट फ़ंक्शन को ट्रिगर करता है जिससे वह एलिमेंट संबंधित है।

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

findElement() फ़ंक्शन पहला मेल खाने वाला वेब एलिमेंट लौटाता है और यदि कोई वेब एलिमेंट मौजूद नहीं है तो NoSuchElementException देता है। findElements() फ़ंक्शन मेल खाने वाले वेब एलिमेंट्स की एक सूची लौटाता है और यदि लोकेटर से कोई एलिमेंट मेल नहीं खाता है तो एक खाली सूची लौटाता है।

एक वेबएलिमेंट एक Selenium यह एक रैपर है जो sendKeys, click और clear जैसी स्वचालित विधियों को उपलब्ध कराता है। HTML एलिमेंट अंतर्निहित DOM नोड होता है। WebDriver DOM नोड का पता लगाता है और इंटरैक्शन के लिए WebElement संदर्भ लौटाता है।

जी हां। कृत्रिम बुद्धिमत्ता (AI) आधारित उपकरण DOM का विश्लेषण करते हैं और आईडी, नाम, सापेक्ष पथ या CSS चयनकर्ताओं का उपयोग करके स्थिर लोकेटर प्रस्तावित करते हैं। ये उपकरण अद्वितीय विशेषता संयोजनों का पता लगाकर और किसी विशेषता में परिवर्तन होने पर वैकल्पिक विकल्पों का सुझाव देकर लोकेटर की अस्थिरता को कम करते हैं।

जी हां। एआई-संचालित सेल्फ-हीलिंग लोकेटर किसी एट्रिब्यूट में बदलाव होने पर वेबएलिमेंट को स्वचालित रूप से पुनः बाइंड कर देते हैं। इससे अनियमित विफलताएं कम होती हैं, रखरखाव का प्रयास घटता है और सिस्टम सुचारू रूप से चलता रहता है। Selenium एजाइल डिलीवरी चक्रों में बार-बार होने वाले UI अपडेट के बावजूद सूट स्थिर रहते हैं।

वेबएलिमेंट से संबंधित सामान्य अपवादों में StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException और TimeoutException शामिल हैं। इनमें से प्रत्येक एक अलग DOM, दृश्यता या सिंक्रोनाइज़ेशन समस्या को इंगित करता है जिसे प्रतीक्षा करके या एलिमेंट संदर्भों को रीफ़्रेश करके हल किया जाना चाहिए।

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