वेबएलिमेंट Selenium
वेबएलिमेंट Selenium
वेबसाइट विज़िटर से जानकारी प्राप्त करने के लिए फ़ॉर्म मूलभूत वेब तत्व हैं। वेब फ़ॉर्म में अलग-अलग GUI तत्व होते हैं जैसे टेक्स्ट बॉक्स, पासवर्ड फ़ील्ड, चेकबॉक्स, रेडियो बटन, ड्रॉपडाउन, फ़ाइल इनपुट आदि।
हम देखेंगे कि इन विभिन्न फॉर्म तत्वों तक कैसे पहुंचा जाए Selenium वेब ड्राइवर के साथ Java. Selenium प्रत्येक फॉर्म तत्व को WebElement के ऑब्जेक्ट के रूप में समाहित करता है। यह तत्वों को खोजने और उन पर कार्रवाई करने के लिए API प्रदान करता है जैसे टेक्स्ट बॉक्स में टेक्स्ट दर्ज करना, बटन पर क्लिक करना आदि। हम प्रत्येक फॉर्म तत्व तक पहुंचने के लिए उपलब्ध विधियों को देखेंगे।
वेबएलिमेंट का परिचय, findElement(), findElements()
Selenium वेब ड्राइवर एक सरल फॉर्म तत्व को एक ऑब्जेक्ट के रूप में समाहित करता है वेबएलिमेंट.
ऐसी विभिन्न तकनीकें हैं जिनके द्वारा वेबड्राइवर वेब तत्वों के विभिन्न गुणों जैसे आईडी, नाम, वर्ग, एक्सपथ, टैगनाम, सीएसएस चयनकर्ता, लिंक टेक्स्ट आदि के आधार पर फॉर्म तत्वों की पहचान करता है।
वेब ड्राइवर तत्वों को खोजने के लिए निम्नलिखित दो वेबएलिमेंट विधियाँ प्रदान करता है।
- तत्व खोजें() - एक एकल वेब तत्व ढूँढता है और WebElement के रूप में वापस लौटता है Selenium वस्तु।
- तत्व खोजें() - लोकेटर मानदंड से मेल खाने वाले WebElement ऑब्जेक्ट्स की एक सूची लौटाता है।
आइए findElement() विधि का उपयोग करके वेब पेज में एक एकल तत्व - टेक्स्ट फ़ील्ड को WebElement के ऑब्जेक्ट के रूप में प्राप्त करने के लिए कोड स्निपेट देखें। हम बाद के ट्यूटोरियल में कई तत्वों को खोजने की findElements() विधि को कवर करेंगे।
चरण 1) वेब एलिमेंट्स के ऑब्जेक्ट बनाने के लिए हमें इस पैकेज को आयात करने की आवश्यकता है
चरण 2) हमें WebDriver क्लास पर उपलब्ध findElement() विधि को कॉल करना होगा और WebElement का ऑब्जेक्ट प्राप्त करना होगा।
यह कैसे किया जाता है, यह देखने के लिए नीचे देखें।
Selenium इनपुट टेक्स्ट
इनपुट बॉक्स इन दो प्रकारों में से किसी एक को संदर्भित करते हैं:
- टेक्स्ट फ़ील्ड- Selenium इनपुट टेक्स्ट बॉक्स जो टाइप किए गए मानों को स्वीकार करते हैं और उन्हें वैसे ही दिखाते हैं जैसे वे हैं।
- पासवर्ड फ़ील्ड- पाठ बॉक्स जो टाइप किए गए मानों को स्वीकार करते हैं लेकिन संवेदनशील मानों को प्रदर्शित होने से बचाने के लिए उन्हें विशेष वर्णों (सामान्यतः बिंदु और तारांकन) की श्रृंखला के रूप में छिपा देते हैं।
लोकेटर
findElement() विधि एक पैरामीटर लेती है जो तत्व का लोकेटर है। By.id(), By.name(), By.xpath(), By.CSSSelector() आदि जैसे विभिन्न लोकेटर, पृष्ठ में तत्वों को उनके गुणों जैसे “““ आईडी, नाम या पथ, आदि का उपयोग करके ढूँढते हैं।
आप तत्वों की आईडी, एक्सपथ आदि प्राप्त करने में सहायता के लिए फायर पथ जैसे प्लगइन का उपयोग कर सकते हैं।
उदाहरण साइट का उपयोग करना https://demo.guru99.com/test/login.html नीचे आईडी लोकेटर का उपयोग करके “ईमेल पता” टेक्स्ट फ़ील्ड और नाम लोकेटर का उपयोग करके “पासवर्ड” फ़ील्ड का पता लगाने के लिए कोड दिया गया है।
- ईमेल टेक्स्ट फ़ील्ड आईडी द्वारा स्थित है
- पासवर्ड फ़ील्ड नाम से स्थित है
सेंडकीज़ इन Selenium
sendkeys() में Selenium परीक्षण निष्पादन के दौरान टेक्स्ट और पासवर्ड फ़ील्ड में संपादन योग्य सामग्री दर्ज करने के लिए उपयोग की जाने वाली विधि है। इन फ़ील्ड को नाम, वर्ग, आईडी आदि जैसे लोकेटर का उपयोग करके पहचाना जाता है। यह वेब एलिमेंट पर उपलब्ध एक विधि है। टाइप विधि के विपरीत, sendkeys() विधि किसी भी टेक्स्ट बॉक्स में मौजूदा टेक्स्ट को प्रतिस्थापित नहीं करती है।
टेक्स्ट कैसे दर्ज करें Selenium
टेक्स्ट फ़ील्ड और पासवर्ड फ़ील्ड में टेक्स्ट दर्ज करने के लिए, sendKeys() वेबएलिमेंट में उपलब्ध विधि है Selenium.
इसी उदाहरण का उपयोग करते हुए https://demo.guru99.com/test/login.html साइट पर, यहां बताया गया है कि हम टेक्स्ट फ़ील्ड और पासवर्ड फ़ील्ड कैसे ढूंढते हैं और उनमें टेक्स्ट कैसे दर्ज करते हैं Selenium.
- आईडी लोकेटर का उपयोग करके “ईमेल पता” टेक्स्ट फ़ील्ड ढूंढें।
- नाम लोकेटर का उपयोग करके “पासवर्ड” फ़ील्ड ढूंढें
- "ईमेल पता" में पाठ दर्ज करें Selenium sendkeys विधि.
- sendKeys() विधि का उपयोग करके “पासवर्ड” फ़ील्ड में पासवर्ड दर्ज करें।
इनपुट में मान हटाना Boxes
RSI स्पष्ट() विधि का उपयोग इनपुट बॉक्स में पाठ को हटाने के लिए किया जाता है। इस विधि को किसी पैरामीटर की आवश्यकता नहीं हैनीचे दिया गया कोड स्निपेट ईमेल या पासवर्ड फ़ील्ड से टेक्स्ट साफ़ कर देगा
Selenium बटन क्लिक करें
RSI Selenium क्लिक बटन तक click() विधि का उपयोग करके पहुँचा जा सकता है।
उपरोक्त उदाहरण में
- साइन इन करने के लिए बटन ढूंढें
- साइट पर लॉग इन करने के लिए साइट के लॉग इन पेज पर “साइन-इन” बटन पर क्लिक करें।
Selenium सबमिट बटन
सबमिट बटन का उपयोग पूरे फ़ॉर्म को सर्वर पर सबमिट करने के लिए किया जाता है। हम या तो वेब एलिमेंट पर सामान्य बटन की तरह क्लिक () विधि का उपयोग कर सकते हैं जैसा कि हमने ऊपर किया है या फ़ॉर्म में किसी भी वेब एलिमेंट पर या सबमिट बटन पर सबमिट () विधि का उपयोग कर सकते हैं।
जब सबमिट() का उपयोग किया जाता है, तो वेबड्राइवर यह जानने के लिए DOM को देखेगा कि तत्व किस फॉर्म से संबंधित है, और फिर उसके सबमिट फ़ंक्शन को ट्रिगर करेगा।
पूरा कोड
यहां पूर्ण कार्यशील कोड है
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() का सामना करना पड़ता है, तो इसका अर्थ है कि वह तत्व उस पृष्ठ पर नहीं मिला है, जहां वेब ड्राइवर ने पृष्ठ तक पहुंच बनाई थी।
- क्रोम में फायरपाथ या इंस्पेक्ट एलिमेंट का उपयोग करके अपने लोकेटर की पुनः जांच करें।
- जाँच करें कि क्या आपके द्वारा कोड में प्रयुक्त मान फायरपाथ में मौजूद तत्व के मान से भिन्न है।
- कुछ गुण कुछ तत्वों के लिए गतिशील होते हैं। यदि आप पाते हैं कि मान भिन्न है और गतिशील रूप से बदल रहा है, तो By.xpath() या By.cssSelector() का उपयोग करने पर विचार करें जो अधिक विश्वसनीय लेकिन जटिल तरीके हैं।
- कभी-कभी, यह प्रतीक्षा समस्या भी हो सकती है, अर्थात, वेब ड्राइवर ने पृष्ठ के पूरी तरह लोड होने से पहले ही आपके कोड को निष्पादित कर दिया हो, आदि।
- अंतर्निहित या स्पष्ट प्रतीक्षा का उपयोग करके findElement() से पहले प्रतीक्षा जोड़ें।
सारांश
- नीचे दी गई तालिका ऊपर चर्चित प्रत्येक प्रकार के तत्व तक पहुंचने के लिए आदेशों का सारांश प्रस्तुत करती है
| तत्व | आदेश | विवरण |
|---|---|---|
| निवेश Box | sendKeys () | टेक्स्ट बॉक्स में मान दर्ज करने के लिए उपयोग किया जाता है |
| स्पष्ट() | टेक्स्ट बॉक्स के वर्तमान मान को साफ़ करने के लिए उपयोग किया जाता है | |
| लिंक | क्लिक करें() | इसका उपयोग लिंक पर क्लिक करने और अगले आदेश पर आगे बढ़ने से पहले पेज लोड होने तक प्रतीक्षा करने के लिए किया जाता है। |
| बटन सबमिट करें | जमा करना() |
- वेबड्राइवर एकाधिक SELECT तत्व में एक से अधिक विकल्पों के चयन की अनुमति देता है।
- आप फॉर्म के किसी भी तत्व पर सबमिट() विधि का उपयोग कर सकते हैं। वेबड्राइवर स्वचालित रूप से उस फॉर्म के सबमिट फ़ंक्शन को ट्रिगर करेगा जहां वह तत्व संबंधित है।






