वैरिएबल, इको, अलर्ट, पॉपअप हैंडलिंग को स्टोर करें Selenium आईडीई

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

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

  • 🔘 एक वेरिएबल बनाएं: स्टोर कमांड मान लेता है Target और वैल्यू में वेरिएबल का नाम।
  • इसे दोबारा पढ़ें: जहां भी कोई कमांड लक्ष्य या मान स्वीकार करता है, वहां नाम को ${ } में लपेटें।
  • डीबगिंग के लिए प्रिंट करें: echo कमांड एक लिटरल स्ट्रिंग या वेरिएबल को सीधे IDE लॉग में लिखता है।
  • 🧪 अलर्ट स्वतः स्वीकार कर लिए जाते हैं: IDE आपके लिए OK पर क्लिक कर देता है, इसलिए संदेश के टेक्स्ट को कैप्चर करने के लिए storeAlert का उपयोग करें।
  • पुष्टि के लिए निर्णय की आवश्यकता होती है: डायलॉग बॉक्स खोलने वाले कमांड से पहले chooseOkOnNextConfirmation लिखें।
  • 📊 विंडो स्विचिंग: selectWindow किसी विंडो के शीर्षक को लक्षित करता है, और null लक्ष्य पैरेंट विंडो पर वापस लौटता है।

इसमें वेरिएबल, इको, अलर्ट और पॉपअप हैंडलिंग को स्टोर करना शामिल है। Selenium आईडीई

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

⚠️ संस्करणों के बारे में एक नोट: नीचे दिए गए स्क्रीनशॉट मूल फ़ाइल से लिए गए हैं। Firefox-लगाना Selenium IDE, और कमांड इसके कैमलकेस सेलेनीज़ नामों का उपयोग करते हैं। वर्तमान क्रोम, Firefox एज एक्सटेंशन वही व्यवहार बनाए रखता है लेकिन अधिकांश कमांड नामों को स्पेस के साथ लिखता है। एक मैपping यह तालिका इस लेख के अंत में दिखाई देती है, और प्रत्येक मूल कमांड और स्क्रीनशॉट को प्रकाशित रूप में संरक्षित किया गया है।

Selenium आईडीई चर

दुकान

चरों को संग्रहीत करने के लिए Selenium हम IDE का उपयोग करते हैं की दुकान कमांड। नीचे दिया गया चित्र "ट्यूटोरियल" मान को "myVariable" नामक वेरिएबल में संग्रहीत करता है।

Selenium IDE स्टोर कमांड जिसमें ट्यूटोरियल का मान myVariable में सहेजा गया है

वेरिएबल को एक्सेस करने के लिए, बस उसे ${ … } चिह्न के अंदर रखें। उदाहरण के लिए, “myVariable” का मान “userName” टेक्स्टबॉक्स में दर्ज करने के लिए। Mercury टूर्स, वैल्यू फ़ील्ड में ${myVariable} दर्ज करें।

Selenium IDE में userName टेक्स्टबॉक्स के Value फ़ील्ड में ${myVariable} का उपयोग करके कमांड टाइप करें।

इको कमांड में Selenium आईडीई

एक संग्रहित चर तब तक अदृश्य रहता है जब तक कि उसे प्रिंट नहीं किया जाता, और यही वह बात है जो गूंज यह कमांड प्लेबैक के दौरान IDE लॉग पेन में एक संदेश लिखता है, जिससे यह पुष्टि करने का सबसे तेज़ तरीका बन जाता है कि स्टोर कमांड ने आपकी अपेक्षा के अनुसार डेटा कैप्चर किया है या नहीं, इससे पहले कि आप उस पर अभिकथन करें।

यह कमांड दोनों रूपों को स्वीकार करता है:

  • एक शाब्दिक स्ट्रिंग। पाठ को इसमें डालें Target उदाहरण के लिए, क्षेत्र लॉगिन चरण पूरा हुआकिसी लंबी स्क्रिप्ट में चेकपॉइंट को चिह्नित करने के लिए।
  • एक चर। ${myVariable} को इसमें रखें Target नाम के बजाय फ़ील्ड में संग्रहीत मान मुद्रित किया जाता है।

दो आदतें इको को उसके शुरुआती अनुमान से कहीं अधिक उपयोगी बनाती हैं। किसी वेरिएबल को बनाने वाले स्टोर कमांड के तुरंत बाद उसे प्रिंट करें, ताकि विफलता होने पर उसे प्रिंट किया जा सके। tracबीस चरण बाद अभिकथन के बजाय कैप्चर पर ध्यान केंद्रित करें। और प्रत्येक संदेश के आगे उस चरण का नाम लिखें जिससे वह संबंधित है, क्योंकि लॉग फलक सभी कमांड को एक सपाट सूची में दिखाता है। ध्यान दें कि इको केवल लॉग में लिखता है - यह कभी भी पृष्ठ को नहीं बदलता और कभी भी परीक्षण में विफल नहीं होता, इसलिए इसे स्क्रिप्ट में स्थायी रूप से छोड़ना सुरक्षित है।

स्टोरएलिमेंटवर्तमान

यह कमांड निर्दिष्ट तत्व की उपस्थिति के आधार पर "true" या "false" मान संग्रहीत करता है। नीचे दी गई स्क्रिप्ट "var1" में बूलियन मान "true" और "var2" में "false" संग्रहीत करती है। सत्यापन के लिए, हम var1 और var2 के मान प्रदर्शित करने के लिए echo कमांड का उपयोग करेंगे। URL नीचे दिए गए चित्र के लिए इसे इस प्रकार सेट किया गया था: Mercury पर्यटन मुखपृष्ठ.

Selenium IDE storeElementPresent var1 में true और var2 में false मान सहेज रहा है, जो लॉग में प्रदर्शित हो रहा है।

स्टोरटेक्स्ट

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

Selenium IDE storeText कमांड css=h1 को textVar वेरिएबल में पढ़ रहा है।

क्योंकि यह पृष्ठ पर अपनी तरह का एकमात्र तत्व है, इसलिए "css=h1" को लक्ष्य के रूप में उपयोग करना सुरक्षित है। नीचे दी गई छवि इसे दर्शाती है। Selenium IDE "Sign Up" स्ट्रिंग को "textVar" वेरिएबल में सेव करने में सक्षम था, क्योंकि echo ने इसका मान सही ढंग से प्रिंट किया था।

Selenium IDE लॉग फलक टेक्स्टवैर में संग्रहीत मान के रूप में साइन अप प्रिंट कर रहा है।

अलर्ट, पॉपअप और मल्टीपल Windows

अलर्ट शायद पॉप-अप विंडो का सबसे सरल रूप है। सबसे आम Selenium अलर्ट को संभालने में प्रयुक्त IDE कमांड निम्नलिखित हैं:

चेतावनियाँ का उपयोग करता है

दावाअलर्ट

दावानहींचेतावनी

यह अलर्ट का संदेश प्राप्त करता है और आपके द्वारा निर्दिष्ट स्ट्रिंग मान के विरुद्ध उसकी पुष्टि करता है।

दावाअलर्टवर्तमान

दावाअलर्टनहींमौजूद

यह पुष्टि करता है कि कोई अलर्ट मौजूद है या नहीं।
स्टोरअलर्ट यह अलर्ट संदेश को पुनः प्राप्त करता है और उसे आपके द्वारा निर्दिष्ट चर में संग्रहीत करता है।
स्टोरअलर्टवर्तमान अलर्ट मौजूद होने पर TRUE लौटाता है, अन्यथा FALSE।

सत्यापित करेंअलर्ट

सत्यापित करेंअलर्ट नहीं

यह अलर्ट का संदेश प्राप्त करता है और सत्यापित करता है कि क्या यह आपके द्वारा निर्दिष्ट स्ट्रिंग मान के बराबर है।

सत्यापित करेंअलर्टवर्तमान

सत्यापित करेंअलर्टनहींमौजूद

यह सत्यापित करता है कि कोई अलर्ट मौजूद है या नहीं।

अलर्ट के साथ काम करते समय इन दो बातों को याद रखें:

  • Selenium IDE स्वचालित रूप से अलर्ट विंडो के ओके बटन पर क्लिक कर देता है, इसलिए आप वास्तविक अलर्ट नहीं देख पाएंगे।
  • Selenium IDE पेज के onload() फ़ंक्शन के अंदर उत्पन्न होने वाले अलर्ट को हैंडल नहीं कर सकता। यह केवल पेज के पूरी तरह लोड होने के बाद उत्पन्न होने वाले अलर्ट को ही हैंडल करता है।

इस उदाहरण में हम storeAlert कमांड का उपयोग यह दिखाने के लिए करते हैं कि भले ही Selenium IDE ने वास्तविक अलर्ट प्रदर्शित नहीं किया, फिर भी वह संदेश प्राप्त करने में सक्षम था।

चरण 1) In Selenium IDE में, बेस सेट करें URL http://jsbin.com पर जाएं। पूरा URL यह http://jsbin.com/usidix है। ये jsbin स्निपेट्स इस समय के हैं। Firefoxयह प्लगइन पुराने समय का है और हो सकता है कि अब समस्या हल न हो; अलर्ट उत्पन्न करने वाले बटन वाले किसी भी पृष्ठ पर यही परिणाम दिखाई देता है।

चरण 2) नीचे दिखाए गए अनुसार स्क्रिप्ट बनाएं। क्लिक कमांड 'गो!' बटन को लक्षित करता है, स्टोरअलर्ट संदेश को अलर्टमैसेज में कैप्चर करता है, और इको उसे प्रिंट करता है।

Selenium jsbin अलर्ट डेमो पेज के लिए क्लिक, स्टोरअलर्ट और इको कमांड के साथ IDE स्क्रिप्ट

चरण 3) स्क्रिप्ट को चलाएं, और वास्तविक अलर्ट देखने की उम्मीद न करें। नीचे दिया गया लॉग पैनल कैप्चर किया गया संदेश दिखाता है, भले ही डायलॉग बॉक्स कभी दिखाई नहीं दिया हो।

Selenium प्लेबैक के बाद storeAlert द्वारा प्राप्त अलर्ट टेक्स्ट को दर्शाने वाला IDE लॉग

पुष्टिकरण

पुष्टिकरण पॉप-अप होते हैं जिनमें आपको OK और CANCEL बटन मिलते हैं, जबकि अलर्ट में केवल OK बटन होता है। पुष्टिकरण को संभालने के लिए आप जिन कमांड का उपयोग कर सकते हैं, वे अलर्ट कमांड के समान ही होते हैं।

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • स्टोरपुष्टि
  • स्टोरपुष्टिवर्तमान
  • पुष्टि सत्यापित करें / पुष्टि न होने की पुष्टि सत्यापित करें
  • पुष्टि मौजूद है / पुष्टि मौजूद नहीं है

इसके अलावा, ये आदेश बताते हैं Selenium आपको कौन सा बटन चुनना है, ओके या कैंसिल?

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • चुनेंरद्द करेंअगलापुष्टि

इन आदेशों को यहाँ रखें से पहले वह कमांड जो पुष्टिकरण बॉक्स को ट्रिगर करती है, ताकि Selenium IDE को पहले से ही पता होता है कि कौन सा विकल्प चुनना है। हालांकि, स्क्रिप्ट के निष्पादन के दौरान आपको वास्तविक पुष्टिकरण बॉक्स दिखाई नहीं देगा।

आइए एक ऐसे वेबपेज का परीक्षण करें जिसमें एक बटन हो जिसे इस प्रकार कोड किया गया हो कि वह यह रिपोर्ट करे कि उपयोगकर्ता ने ओके दबाया या कैंसिल।

चरण 1) In Selenium IDE में, बेस सेट करें URL http://jsbin.com पर जाएं। पूरा URL यह http://jsbin.com/enifaf है।

चरण 2) नीचे दिखाए गए अनुसार स्क्रिप्ट बनाएं। इस बार हम पहले ओके बटन दबाएंगे।

Selenium IDE स्क्रिप्ट, डायलॉग बॉक्स खोलने वाले क्लिक से पहले chooseOkOnNextConfirmation को रखती है।

चरण 3) स्क्रिप्ट को चलाएँ और ध्यान दें कि आपको वास्तविक पुष्टि नहीं दिखती है, फिर भी वेबपेज बताता है कि कौन सा बटन दबाना है। Selenium IDE दबाया गया।

टेस्ट पेज यह रिपोर्ट करता है कि पुष्टिकरण डायलॉग बॉक्स का ओके बटन दबाया गया था।

चरण 4) chooseOkOnNextConfirmation कमांड को chooseCancelOnNextConfirmation से बदलें और स्क्रिप्ट को दोबारा चलाएँ। अब पेज विपरीत विकल्प दिखाएगा।

Selenium IDE स्क्रिप्ट को संपादित करके chooseOkOnNextConfirmation के स्थान पर chooseCancelOnNextConfirmation का उपयोग किया गया है।

विभिन्न Windows

यदि आप किसी ऐसे लिंक पर क्लिक करते हैं जो एक अलग विंडो खोलता है, तो आपको पहले निर्देश देना होगा। Selenium विंडो के अंदर मौजूद तत्वों तक पहुँचने से पहले आपको IDE में उस विंडो का चयन करना होगा। पुराने IDE में आप विंडो के शीर्षक को उसके लोकेटर के रूप में उपयोग करते हैं।

हम विंडो के बीच स्विच करने के लिए selectWindow कमांड का उपयोग करते हैं।

हम http://jsbin.com/ocinaj/1 लिंक का उपयोग करेंगे, जिसका शीर्षक "फर्स्ट विंडो" है। उस पृष्ठ पर मौजूद "यहाँ" हाइपरलिंक फेसबुक को एक नई विंडो में खोलता है, जिसके बाद हम निर्देश देते हैं। Selenium आईडीई को निम्न कार्य करने के लिए:

  • विंडो के शीर्षक को लोकेटर के रूप में उपयोग करते हुए selectWindow कमांड का प्रयोग करके मूल विंडो से नई लॉन्च की गई फेसबुक विंडो में नियंत्रण स्थानांतरित करें।
  • नई विंडो के शीर्षक की पुष्टि करें।
  • selectWindow कमांड का उपयोग करके मूल विंडो को पुनः चुनें और लक्ष्य के रूप में "null" चुनें।
  • वर्तमान में चयनित विंडो के शीर्षक की पुष्टि करें।

ऊपर दी गई योजना को यहाँ दिखाए गए चार चरणों के क्रम में रूपांतरित किया जा सकता है।

मूल विंडो से नई विंडो पर और फिर वापस मूल विंडो पर स्विच करने का आरेख

चरण 1) आधार स्थापित करें URL http://jsbin.com पर जाएं।

चरण 2) नीचे दिखाए अनुसार स्क्रिप्ट बनाएं।

Selenium दो विंडो के बीच स्विच करने के लिए selectWindow, pause और verifyTitle का उपयोग करने वाली IDE स्क्रिप्ट

नई विंडो के लोड होने का इंतजार करने के लिए हमें पॉज़ कमांड की आवश्यकता होती है, ताकि हम उसका शीर्षक पढ़ सकें।

चरण 3) स्क्रिप्ट निष्पादित करें। ध्यान दें कि परीक्षण का मामला पास हो गया, जिसका मतलब है कि हम विंडोज़ के बीच स्विच करने और उनके शीर्षकों को सफलतापूर्वक सत्यापित करने में सक्षम थे।

हरी झंडी मिलने का परिणाम Selenium दोनों विंडो शीर्षकों के सत्यापित होने के बाद IDE

हमेशा याद रखें कि selectWindow टारगेट को "null" पर सेट करने से पैरेंट विंडो अपने आप सेलेक्ट हो जाती है — इस मामले में वह विंडो जहां एलिमेंट "link=here" मौजूद है।

नोट: इस ट्यूटोरियल के बनने के बाद से फेसबुक ने अपने पेज का शीर्षक बदल दिया है। कृपया स्क्रिप्ट में अपेक्षित शीर्षक को तदनुसार संशोधित करें।

आधुनिक Selenium इन कमांडों के IDE समकक्ष

RSI Firefox-plugin IDE को तब बंद कर दिया गया जब Firefox वेबएक्सटेंशन आर्किटेक्चर में स्थानांतरित हो गया, और वर्तमान क्रोम, Firefox एज एक्सटेंशन ने अधिकांश सेलेनीज़ कमांड्स का नाम बदलकर स्पेस वाले फॉर्मेट में कर दिया है। व्यवहार अपरिवर्तित है, इसलिए वर्तमान इंस्टॉलेशन के साथ उपरोक्त स्क्रिप्ट्स को पढ़ने के लिए नीचे दी गई तालिका ही पर्याप्त है।

इस ट्यूटोरियल में लेगेसी कमांड का उपयोग किया गया है। वर्तमान Selenium आईईडी कमांड
की दुकान की दुकान
गूंज गूंज
स्टोरटेक्स्ट स्टोर टेक्स्ट
स्टोरएलिमेंटप्रेजेंट स्टोर एलिमेंट मौजूद है (या एलिमेंट मौजूद होने की पुष्टि करें)
assertAlert / verifyAlert अलर्ट की पुष्टि करें / अलर्ट सत्यापित करें
chooseOkOnNextConfirmation अगली पुष्टि पर ओके चुनें
चुनेंरद्द करेंअगलापुष्टि अगली पुष्टि पर रद्द करने का विकल्प चुनें
selectWindow (title as target) हैंडल=${हैंडल} वाली विंडो चुनें

दो अंतरों पर ध्यान देना महत्वपूर्ण है। प्रॉम्प्ट्स, जिनका उल्लेख पुराने लेख में नहीं किया गया है, अब उनके अपने कमांड हैं: अगले प्रश्न पर उत्तर दें संवाद प्रकट होने से पहले ही उत्तर की योजना बना लेता है, और वेबड्राइवर दृश्यमान प्रॉम्प्ट पर उत्तर देता है पहले से खुले हुए प्रॉम्प्ट में टाइप करता है। और विंडो स्विचिंग अब पेज टाइटल पर निर्भर नहीं करती है। चलाएँ दुकान की खिड़की का हैंडल पहले एक हैंडल कैप्चर करें, फिर पास करें हैंडल=${आपकाहैंडल} विंडो का चयन करने के लिए। यह बदलाव ऊपर दिए गए नोट में वर्णित विफलता मोड को दूर करता है, जहां कोई साइट केवल अपने पेज का नाम बदल देती है और स्क्रिप्ट विंडो को ढूंढना बंद कर देती है। आधिकारिक Selenium आईईडी परियोजना साइट यह वर्तमान में उपलब्ध सभी कमांडों की सूची दिखाता है।

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

जी हां। ${myVariable} और ${myvariable} दो अलग-अलग वेरिएबल्स को संदर्भित करते हैं, और किसी ऐसे वेरिएबल को संदर्भित करने पर जो कभी संग्रहीत नहीं हुआ, त्रुटि उत्पन्न होने के बजाय एक खाली स्ट्रिंग प्राप्त होती है। मौन रिक्तियों से बचने के लिए पूरे सूट में एक ही नामकरण पद्धति का पालन करें।

हाँ। ${ } सिंटैक्स किसी भी स्थिति में विस्तारित होता है। Target या वैल्यू फ़ील्ड, ताकि यह किसी ओपन कमांड, XPath या CSS सेलेक्टर के अंदर काम कर सके। इस तरह एक रिकॉर्ड की गई स्क्रिप्ट को रन के दौरान पहले कैप्चर किए गए डेटा द्वारा संचालित स्क्रिप्ट में बदला जाता है।

Selenese में कोई गणितीय ऑपरेटर नहीं हैं। छोटे अक्षरों में execute script कमांड का उपयोग करें। Javaएक स्क्रिप्ट एक्सप्रेशन जो वेरिएबल को पढ़ता है और परिणाम लौटाता है, फिर उस रिटर्न वैल्यू को स्टोर करता है। ध्यान रखें कि स्टोर की गई प्रत्येक वैल्यू स्ट्रिंग के रूप में आती है, इसलिए पहले उसे कन्वर्ट कर लें।

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

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

मशीन लर्निंग उपकरण किसी परिदृश्य के सरल भाषा में दिए गए विवरण से कमांड अनुक्रम प्रस्तावित कर सकते हैं और रिकॉर्डर द्वारा उत्पन्न लोकेटरों की तुलना में अधिक विश्वसनीय लोकेटर सुझा सकते हैं। एआई-सहायता प्राप्त लोकेटर सुधार भी सहायक होता है, क्योंकि किसी तत्व का नाम बदल दिए जाने के कारण ही अक्सर संग्रहीत मान खाली आता है।

हाँ। परीक्षण को निर्यात करें Java or Pythonफिर कोपायलट को फ्लैट कमांड लिस्ट को पेज ऑब्जेक्ट्स और रियूजेबल वेट्स में रिफैक्टर करने दें। अलर्ट हैंडलिंग को मैन्युअल रूप से जांचें, क्योंकि जेनरेट किया गया कोड अक्सर एक विजिबल डायलॉग मान लेता है जिसे IDE पहले ही बंद कर चुका होता है।

शीर्षक-आधारित चयन अस्पष्ट हो जाता है और गलत विंडो का चयन हो सकता है। यही कारण है कि वर्तमान IDE हैंडल को प्राथमिकता देता है: विंडो खुलने के तुरंत बाद स्टोर विंडो हैंडल के साथ एक हैंडल कैप्चर करें, फिर handle=${yourHandle} के साथ स्विच करें।

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