सेलेनियम फॉर्म

विषय - सूची:

Anonim

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

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

इस ट्यूटोरियल में, हम देखेंगे कि निम्नलिखित फॉर्म एलिमेंट्स की पहचान कैसे करें

  • WebElement का परिचय, findElement (), findElements ()
  • इनपुट बॉक्स
  • इनपुट बॉक्स में मान दर्ज करना
  • इनपुट बॉक्स में मान हटाना
  • बटन
  • बटन जमा करें
  • पूरा कोड
  • समस्या निवारण

WebElement का परिचय, findElement (), findElements ()

सेलेनियम वेब ड्रायवर WebElement के ऑब्जेक्ट के रूप में एक सरल फ़ॉर्म तत्व को एनकोड करता है।

विभिन्न तकनीकें हैं जिनके द्वारा वेबड्राइवर आईडी, नाम, वर्ग, XPath, Tagname, CSS चयनकर्ता, लिंक पाठ, आदि जैसे वेब तत्वों के विभिन्न गुणों के आधार पर प्रपत्र तत्वों की पहचान करता है।

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

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

आइए देखें कि किसी एकल तत्व को प्राप्त करने के लिए कोड स्निपेट्स - वेब पेज में वेबएमेंट के ऑब्जेक्ट के रूप में टेक्स्ट फील्ड का उपयोग करें। हम बाद के ट्यूटोरियल्स में कई तत्वों को खोजने के लिए findElements () पद्धति को कवर करेंगे।

चरण 1: हमें वेब तत्वों की वस्तुओं को बनाने के लिए इस पैकेज को आयात करने की आवश्यकता है

चरण 2: हमें WebDriver वर्ग पर उपलब्ध findElement () पद्धति को कॉल करने और WebElement की एक वस्तु प्राप्त करने की आवश्यकता है।

नीचे देखें कि यह कैसे किया जाता है।

इनपुट बॉक्स

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

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

लोकेटर

विधि findElement () एक पैरामीटर लेता है जो तत्व के लिए एक लोकेटर है। By.id (), By.name (), By.xpath (), By.CSSSelector () इत्यादि जैसे विभिन्न लोकेटर पृष्ठ के तत्वों का पता लगाते हैं जैसे कि उनके गुणों का उपयोग करना, जैसे ````` आईडी, नाम या पथ, आदि। आदि।

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

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

  1. ईमेल टेक्स्ट फ़ील्ड Id द्वारा स्थित है
  2. पासवर्ड फ़ील्ड नाम से स्थित है

सेलेनियम में प्रेषक

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

इनपुट बॉक्स में मान दर्ज करना

पाठ फ़ील्ड और पासवर्ड फ़ील्ड में पाठ दर्ज करने के लिए, SendKeys () सेलेनियम में WebElement पर उपलब्ध विधि है।

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

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

इनपुट बॉक्स में मान हटाना

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

बटन

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

ऊपर के उदाहरण में

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

बटन जमा करें

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

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

पूरा कोड

यहाँ पूरा काम कोड है

आयात org.openqa.selenium.By;आयात org.openqa.selenium.WebDriver;आयात org.openqa.selenium.chrome.ChromeDriver;आयात org.openqa.selenium। *;सार्वजनिक वर्ग फॉर्म {सार्वजनिक स्थैतिक शून्य main (String [] args) {// वस्तुओं / चर की घोषणा और तात्कालिकताSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver ड्राइवर = नया ChromeDriver ();स्ट्रिंग आधार = "http://demo.guru99.com/test/login.html";Driver.get (baseUrl);// ईमेल पते (TextField) के अनुरूप वेब पर जाएंWebElement ईमेल = driver.findElement (By.id ("ईमेल"));// पासवर्ड फ़ील्ड के अनुरूप वेबइलमेंट प्राप्त करेंWebElement पासवर्ड = driver.findElement (By.name ("पासवार्ड"));email.sendKeys (" इस ईमेल पते को स्पैमबॉट्स से संरक्षित किया जा रहा है। आपको इसे देखने के लिए जावास्क्रिप्ट सक्रिय होना चाहिए।");password.sendKeys ("abcdefghlkjl");System.out.println ("टेक्स्ट फ़ील्ड सेट");// टेक्स्ट बॉक्स में मान हटानाemail.clear ();password.clear ();System.out.println ("पाठ फ़ील्ड साफ़ किया गया");// सबमिट बटन खोजेंWebElement login = driver.findElement (By.id ("SubmitLogin"));// फॉर्म सबमिट करने के लिए क्लिक विधि का उपयोग करनाemail.sendKeys (" इस ईमेल पते को स्पैमबॉट्स से संरक्षित किया जा रहा है। आपको इसे देखने के लिए जावास्क्रिप्ट सक्रिय होना चाहिए।"); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("क्लिक के साथ लॉग इन किया"); // फॉर्म सबमिट करने के लिए सबमिट विधि का उपयोग करें। पासवर्ड फ़ील्ड Driver.get (baseUrl) पर उपयोग किया जाता है; Driver.findElement (By.id ("ईमेल"))। SendKeys (" इस ईमेल पते को स्पैमबॉट्स द्वारा संरक्षित किया जा रहा है। आपको इसे देखने के लिए जावास्क्रिप्ट सक्रिय होना चाहिए।"); Driver.findElement (By.name ("passwd"))। sendKeys ("abcdefghlkjl"); Driver.findElement (By.id ("SubmitLogin")) सबमिट करें (); System.out.println ("सबमिट के साथ लॉगिन करें"); //driver.close (); }}

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

यदि आप तत्वों का पता लगाते समय NoSuchElementException () का सामना करते हैं, तो इसका मतलब है कि वेब पेज तक पहुंचने वाले बिंदु पर तत्व पृष्ठ में नहीं मिला है।

  1. Chrome में Firepath या निरीक्षण तत्व का उपयोग करके अपने लोकेटर को फिर से जांचें।
  2. जांचें कि क्या आपने कोड में उपयोग किया गया मूल्य फायरपाथ में तत्व के लिए एक से अलग है।
  3. कुछ गुण कुछ तत्वों के लिए गतिशील हैं। मामले में, आप पाते हैं कि मान अलग है और गतिशील रूप से बदल रहा है, By.xpath () या By.cssSelector () का उपयोग करने पर विचार करें जो अधिक विश्वसनीय लेकिन जटिल तरीके हैं।
  4. कभी-कभी, यह एक प्रतीक्षा मुद्दा भी हो सकता है यानी, वेब ड्राइवर ने आपके कोड को पृष्ठ लोड होने से पहले ही निष्पादित कर दिया, आदि।
  5. FindElement से पहले प्रतीक्षा करें () निहित या स्पष्ट प्रतीक्षा का उपयोग कर।

सारांश

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