XPath में Selenium: ट्यूटोरियल
XPath क्या है? Selenium?
XPath में Selenium पृष्ठ की HTML संरचना के माध्यम से नेविगेशन के लिए उपयोग किया जाने वाला XML पथ है। यह XML पथ अभिव्यक्ति का उपयोग करके वेब पेज पर किसी भी तत्व को खोजने के लिए एक वाक्यविन्यास या भाषा है। HTML DOM संरचना का उपयोग करके वेबपेज पर किसी भी तत्व का स्थान खोजने के लिए XPath का उपयोग HTML और XML दोनों दस्तावेज़ों के लिए किया जा सकता है।
In Selenium स्वचालन में, यदि तत्व सामान्य लोकेटर जैसे आईडी, क्लास, नाम आदि द्वारा नहीं मिलते हैं, तो वेब पेज पर तत्व को खोजने के लिए XPath का उपयोग किया जाता है।
इस ट्यूटोरियल में, हम जटिल या गतिशील तत्वों को खोजने के लिए Xpath और विभिन्न XPath अभिव्यक्ति के बारे में जानेंगे, जिनकी विशेषताएं रिफ्रेश या किसी भी ऑपरेशन पर गतिशील रूप से बदलती हैं।
XPath सिंटैक्स
XPath में वेब पेज पर स्थित तत्व का पथ शामिल होता है। XPath बनाने के लिए मानक XPath सिंटैक्स है।
Xpath=//tagname[@attribute='value']
सेलेनियम में XPath का मूल प्रारूप नीचे स्क्रीन शॉट के साथ समझाया गया है।
- // : वर्तमान नोड का चयन करें.
- टैगनाम: विशेष नोड का टैगनाम.
- @: विशेषता का चयन करें.
- विशेषता: नोड का विशेषता नाम.
- मूल्य: विशेषता का मान.
वेब पेजों पर तत्व को सटीक रूप से खोजने के लिए विभिन्न प्रकार के लोकेटर उपलब्ध हैं:
XPath लोकेटर | वेब पेज पर विभिन्न तत्व खोजें |
---|---|
ID | तत्व की आईडी द्वारा तत्व ढूंढने के लिए |
कक्षा का नाम | तत्व के क्लासनाम द्वारा तत्व ढूंढने के लिए |
नाम | तत्व के नाम से तत्व को खोजने के लिए |
लिंक पाठ | लिंक के पाठ द्वारा तत्व ढूंढने के लिए |
एक्सपाथ | गतिशील तत्व को खोजने और वेब पेज के विभिन्न तत्वों के बीच आवागमन के लिए XPath की आवश्यकता होती है |
सीएसएस पथ | सीएसएस पथ उन तत्वों का भी पता लगाता है जिनका कोई नाम, वर्ग या आईडी नहीं है। |
एक्स-पथ के प्रकार
XPath दो प्रकार के होते हैं:
1) पूर्ण XPath
2) सापेक्ष XPath
पूर्ण XPath
यह तत्व को खोजने का सीधा तरीका है, लेकिन पूर्ण XPath का नुकसान यह है कि यदि तत्व के पथ में कोई परिवर्तन किया जाता है तो वह XPath विफल हो जाता है।
XPath की मुख्य विशेषता यह है कि यह एकल फॉरवर्ड स्लैश (/) से शुरू होता है, जिसका अर्थ है कि आप रूट नोड से तत्व का चयन कर सकते हैं।
नीचे दी गई स्क्रीन में दिखाए गए तत्व की पूर्ण Xpath अभिव्यक्ति का उदाहरण दिया गया है।
नोट: आप इस पर निम्नलिखित XPath अभ्यास का अभ्यास कर सकते हैं https://demo.guru99.com/test/selenium-xpath.html
क्लिक करें यहाँ उत्पन्न करें यदि वीडियो उपलब्ध न हो
पूर्ण XPath:
/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]
सापेक्ष Xpath
सापेक्ष Xpath HTML DOM संरचना के मध्य से शुरू होता है। यह डबल फ़ॉरवर्ड स्लैश (//) से शुरू होता है। यह वेबपेज पर कहीं भी तत्वों को खोज सकता है, इसका मतलब है कि एक लंबा xpath लिखने की ज़रूरत नहीं है और आप HTML DOM संरचना के मध्य से शुरू कर सकते हैं। सापेक्ष Xpath को हमेशा प्राथमिकता दी जाती है क्योंकि यह रूट एलिमेंट से पूरा पथ नहीं है।
नीचे स्क्रीन में दिखाए गए समान तत्व के सापेक्ष XPath अभिव्यक्ति का उदाहरण दिया गया है। यह XPath द्वारा तत्व खोजने के लिए उपयोग किया जाने वाला सामान्य प्रारूप है।
क्लिक करें यहाँ उत्पन्न करें यदि वीडियो उपलब्ध न हो
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
XPath अक्ष क्या हैं?
XPath अक्ष XML दस्तावेज़ में वर्तमान संदर्भ नोड से भिन्न नोड्स खोजते हैं। XPath अक्ष गतिशील तत्वों को खोजने के लिए उपयोग की जाने वाली विधियाँ हैं, जो अन्यथा सामान्य XPath विधि द्वारा संभव नहीं है जिसमें कोई आईडी, क्लासनाम, नाम आदि नहीं है। XPath में Selenium इसमें विभिन्न विशेषताओं और शर्तों के आधार पर गतिशील तत्वों की पहचान करने और उनका पता लगाने के लिए Contains, AND, Absolute XPath और Relative XPath जैसी कई विधियां शामिल हैं।
अक्ष विधि का उपयोग उन तत्वों को खोजने के लिए किया जाता है, जो रिफ्रेश या किसी अन्य ऑपरेशन पर गतिशील रूप से बदलते हैं। कुछ अक्ष विधियाँ आमतौर पर उपयोग की जाती हैं Selenium वेबड्राइवर जैसे बच्चा, माता-पिता, पूर्वज, भाई-बहन, पूर्ववर्ती, स्वयं, आदि।
डायनेमिक XPath कैसे लिखें? Selenium वेबड्राइवर
1) बेसिक XPath
XPath अभिव्यक्ति विशेषताओं के आधार पर नोड्स या नोड्स की सूची का चयन करती है जैसे आईडी, नाम, क्लासनाम, आदि को XML दस्तावेज़ से निकालें जैसा कि नीचे दिखाया गया है।
Xpath=//input[@name='uid']
पेज तक पहुंचने के लिए यहां लिंक दिया गया है https://demo.guru99.com/test/selenium-xpath.html
कुछ और बुनियादी xpath अभिव्यक्तियाँ:
Xpath=//input[@type='text'] Xpath=//label[@id='message23'] Xpath=//input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='https://demo.guru99.com/'] Xpath=//img[@src='//guru99.com/images/home/java.png']
2) इसमें शामिल है()
Contains() XPath अभिव्यक्ति में उपयोग की जाने वाली एक विधि है। इसका उपयोग तब किया जाता है जब किसी विशेषता का मान गतिशील रूप से बदलता है, उदाहरण के लिए, लॉगिन जानकारी।
कंटेन फीचर में आंशिक पाठ वाले तत्व को खोजने की क्षमता होती है, जैसा कि नीचे दिए गए XPath उदाहरण में दिखाया गया है।
इस उदाहरण में, हमने विशेषता के आंशिक टेक्स्ट मान का उपयोग करके तत्व की पहचान करने का प्रयास किया है। नीचे दिए गए XPath अभिव्यक्ति में सबमिट बटन के स्थान पर आंशिक मान 'sub' का उपयोग किया गया है। यह देखा जा सकता है कि तत्व सफलतापूर्वक पाया गया है।
'टाइप' का पूर्ण मान 'सबमिट' है, लेकिन केवल आंशिक मान 'सब' का उपयोग किया गया है।
Xpath=//*[contains(@type,'sub')]
'name' का पूर्ण मान 'btnLogin' है, लेकिन केवल आंशिक मान 'btn' का उपयोग किया गया है।
Xpath=//*[contains(@name,'btn')]
उपरोक्त अभिव्यक्ति में, हमने 'name' को एक विशेषता के रूप में और 'btn' को आंशिक मान के रूप में लिया है जैसा कि नीचे दिए गए स्क्रीनशॉट में दिखाया गया है। यह 2 तत्वों (LOGIN और RESET) को खोजेगा क्योंकि उनकी 'name' विशेषता 'btn' से शुरू होती है।
इसी तरह, नीचे दिए गए एक्सप्रेशन में, हमने 'id' को एक विशेषता के रूप में और 'message' को आंशिक मान के रूप में लिया है। यह 2 तत्व ('User-ID खाली नहीं होना चाहिए' और 'Password खाली नहीं होना चाहिए') ढूँढ़ेगा क्योंकि इसकी 'id' विशेषता 'message' से शुरू होती है।
Xpath=//*[contains(@id,'message')]
नीचे दिए गए एक्सप्रेशन में, हमने लिंक के “टेक्स्ट” को एक विशेषता के रूप में और ‘यहाँ’ को आंशिक मान के रूप में लिया है जैसा कि नीचे दिए गए स्क्रीनशॉट में दिखाया गया है। यह लिंक (‘यहाँ’) को ढूँढ़ लेगा क्योंकि यह ‘यहाँ’ टेक्स्ट प्रदर्शित करता है।
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) OR और AND का प्रयोग
OR अभिव्यक्ति में, दो शर्तों का उपयोग किया जाता है, चाहे पहली शर्त या दूसरी शर्त सत्य हो। यह तब भी लागू होता है जब कोई एक शर्त सत्य हो या शायद दोनों। इसका मतलब है कि तत्व को खोजने के लिए कोई एक शर्त सत्य होनी चाहिए।
नीचे दी गई XPath अभिव्यक्ति में, यह उन तत्वों की पहचान करता है जिनकी एक या दोनों स्थितियाँ सत्य हैं।
Xpath=//*[@type='submit' or @name='btnReset']
दोनों तत्वों को “LOGIN” तत्व के रूप में हाइलाइट करें जिसमें विशेषता 'type' है और “RESET” तत्व के रूप में हाइलाइट करें जिसमें विशेषता 'name' है।
AND अभिव्यक्ति में, दो शर्तों का उपयोग किया जाता है, तत्व को खोजने के लिए दोनों शर्तें सत्य होनी चाहिए। यदि कोई एक शर्त गलत है तो यह तत्व को खोजने में विफल रहता है।
Xpath=//input[@type='submit' and @name='btnLogin']
नीचे दिए गए अभिव्यक्ति में, 'LOGIN' तत्व को हाइलाइट करें क्योंकि इसमें 'type' और 'name' दोनों विशेषताएं हैं।
4) Xpath प्रारंभ-साथ
XPath प्रारंभ-से() वेब एलिमेंट को खोजने के लिए उपयोग किया जाने वाला एक फ़ंक्शन है जिसका विशेषता मान रिफ्रेश होने पर या वेबपेज पर अन्य गतिशील संचालन द्वारा बदल जाता है। इस विधि में, विशेषता के शुरुआती पाठ का मिलान उस तत्व को खोजने के लिए किया जाता है जिसका विशेषता मान गतिशील रूप से बदलता है। आप ऐसे तत्व भी पा सकते हैं जिनका विशेषता मान स्थिर है (बदलता नहीं है)।
उदाहरण के लिए -: मान लीजिए किसी विशेष तत्व की आईडी गतिशील रूप से बदलती है जैसे:
आईडी=” message12″
आईडी=” message345″
आईडी=” message8769″
और इसी तरह.. लेकिन प्रारंभिक पाठ समान है। इस मामले में, हम Start-with अभिव्यक्ति का उपयोग करते हैं।
नीचे दिए गए एक्सप्रेशन में, दो तत्व हैं जिनकी आईडी “संदेश” से शुरू होती है (यानी, 'उपयोगकर्ता-आईडी रिक्त नहीं होनी चाहिए' और 'पासवर्ड रिक्त नहीं होना चाहिए')। नीचे दिए गए उदाहरण में, XPath उन तत्वों को ढूँढता है जिनकी 'आईडी' 'संदेश' से शुरू होती है।
Xpath=//label[starts-with(@id,'message')]
5) XPath टेक्स्ट() फ़ंक्शन
RSI XPath टेक्स्ट() फ़ंक्शन सेलेनियम वेबड्राइवर का एक अंतर्निहित फ़ंक्शन है जिसका उपयोग वेब तत्व के टेक्स्ट के आधार पर तत्वों का पता लगाने के लिए किया जाता है। यह सटीक टेक्स्ट तत्वों को खोजने में मदद करता है और यह टेक्स्ट नोड्स के सेट के भीतर तत्वों का पता लगाता है। जिन तत्वों का पता लगाया जाना है, वे स्ट्रिंग फ़ॉर्म में होने चाहिए।
इस अभिव्यक्ति में, टेक्स्ट फ़ंक्शन के साथ, हम नीचे दिखाए गए अनुसार सटीक टेक्स्ट मिलान वाले तत्व को खोजते हैं। हमारे मामले में, हम “UserID” टेक्स्ट वाले तत्व को खोजते हैं।
Xpath=//td[text()='UserID']
XPath अक्ष विधियाँ
इन XPath अक्ष विधियों का उपयोग जटिल या गतिशील तत्वों को खोजने के लिए किया जाता है। नीचे हम इनमें से कुछ विधियों को देखेंगे।
इन XPath अक्ष विधि को समझाने के लिए, हम गुरु99 बैंक डेमो साइट का उपयोग करेंगे।
1) अनुसरण
वर्तमान नोड के दस्तावेज़ में सभी तत्वों का चयन करता है ( ) [यूजरआईडी इनपुट बॉक्स वर्तमान नोड है] जैसा कि नीचे स्क्रीन में दिखाया गया है।
Xpath=//*[@type='text']//following::input
“निम्नलिखित” अक्ष का उपयोग करके मिलान करने वाले 3 “इनपुट” नोड हैं- पासवर्ड, लॉगिन और रीसेट बटन। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath विधि का उपयोग कर सकते हैं:
Xpath=//*[@type='text']//following::input[1]
आप [1],[2]…………आदि डालकर आवश्यकता के अनुसार XPath को बदल सकते हैं।
'1' इनपुट के साथ, नीचे दिया गया स्क्रीन शॉट उस विशेष नोड को ढूंढता है जो 'पासवर्ड' इनपुट बॉक्स तत्व है।
2) पूर्वज
पूर्वज अक्ष वर्तमान नोड के सभी पूर्वज तत्वों (दादा-दादी, माता-पिता, आदि) का चयन करता है जैसा कि नीचे स्क्रीन में दिखाया गया है।
नीचे दिए गए अभिव्यक्ति में, हम वर्तमान नोड ("एंटरप्राइज़ परीक्षण" नोड) के पूर्वज तत्व ढूंढ रहे हैं।
Xpath=//*[text()='Enterprise Testing']//ancestor::div
"पूर्वज" अक्ष का उपयोग करके मिलान करने वाले 13 "div" नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं, जहाँ आप अपनी आवश्यकता के अनुसार संख्या 1, 2 बदल सकते हैं:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
आप [1], [2]……………आदि डालकर आवश्यकता के अनुसार XPath को बदल सकते हैं।
3) बच्चा
वर्तमान नोड के सभी संतान तत्वों का चयन करता है (Java) जैसा कि नीचे स्क्रीन में दिखाया गया है।
Xpath=//*[@id='java_technologies']//child::li
“चाइल्ड” अक्ष का उपयोग करके मिलान करने वाले 71 “li” नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए xpath का उपयोग कर सकते हैं:
Xpath=//*[@id='java_technologies']//child::li[1]
आप [1],[2]…………आदि डालकर आवश्यकता के अनुसार xpath बदल सकते हैं।
4) पूर्ववर्ती
नीचे दी गई स्क्रीन में दिखाए अनुसार वर्तमान नोड से पहले आने वाले सभी नोड्स का चयन करें।
नीचे दिए गए अभिव्यक्ति में, यह "लॉगिन" बटन से पहले सभी इनपुट तत्वों की पहचान करता है उपयोगकर्ता पहचान और पासवर्ड इनपुट तत्व.
Xpath=//*[@type='submit']//preceding::input
"पूर्ववर्ती" अक्ष का उपयोग करके मिलान करने वाले 2 "इनपुट" नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath=//*[@type='submit']//preceding::input[1]
आप [1],[2]…………आदि डालकर आवश्यकता के अनुसार xpath बदल सकते हैं।
5) अगला भाई-बहन
संदर्भ नोड के निम्नलिखित भाई-बहनों का चयन करें। भाई-बहन वर्तमान नोड के समान स्तर पर हैं जैसा कि नीचे दी गई स्क्रीन में दिखाया गया है। यह वर्तमान नोड के बाद तत्व को खोजेगा।
xpath=//*[@type='submit']//following-sibling::input
"अनुवर्ती-भाई" अक्ष का उपयोग करके एक इनपुट नोड्स का मिलान।
6) माता-पिता
नीचे दी गई स्क्रीन में दिखाए अनुसार वर्तमान नोड के पैरेंट का चयन करता है।
Xpath=//*[@id='rt-feature']//parent::div
“पैरेंट” अक्ष का उपयोग करके 65 “div” नोड्स मेल खाते हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath=//*[@id='rt-feature']//parent::div[1]
आप [1],[2]…………आदि डालकर आवश्यकता के अनुसार XPath को बदल सकते हैं।
7) स्व
वर्तमान नोड का चयन करता है या 'स्वयं' का अर्थ है कि यह नोड को ही इंगित करता है जैसा कि नीचे स्क्रीन में दिखाया गया है।
“स्वयं” अक्ष का उपयोग करके एक नोड मिलान। यह हमेशा केवल एक नोड पाता है क्योंकि यह स्व-तत्व का प्रतिनिधित्व करता है।
Xpath =//*[@type='password']//self::input
8) वंशज
नीचे दी गई स्क्रीन में दिखाए अनुसार वर्तमान नोड के वंशजों का चयन करता है।
नीचे दिए गए अभिव्यक्ति में, यह वर्तमान तत्व ('मुख्य निकाय सराउंड' फ्रेम तत्व) के सभी तत्व वंशजों की पहचान करता है, जिसका अर्थ नोड के नीचे (चाइल्ड नोड, ग्रैंडचाइल्ड नोड, आदि) है।
Xpath=//*[@id='rt-feature']//descendant::a
"वंशज" अक्ष का उपयोग करके मिलान करने वाले 12 "लिंक" नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath=//*[@id='rt-feature']//descendant::a[1]
आप [1],[2]…………आदि डालकर आवश्यकता के अनुसार XPath को बदल सकते हैं।
सारांश
वेब पेज पर किसी तत्व को खोजने या उस विशेष तत्व पर कोई ऑपरेशन करने के लिए XPath की आवश्यकता होती है।
- सेलेनियम XPath दो प्रकार के होते हैं:
- पूर्ण XPath
- सापेक्ष XPath
- XPath अक्ष वे विधियां हैं जिनका उपयोग गतिशील तत्वों को खोजने के लिए किया जाता है, जिन्हें सामान्य XPath विधि द्वारा खोजना संभव नहीं है
- XPath अभिव्यक्ति XML दस्तावेज़ से ID, नाम, क्लासनाम आदि विशेषताओं के आधार पर नोड्स या नोड्स की सूची का चयन करती है।
यह भी जांचें: - Selenium शुरुआती लोगों के लिए ट्यूटोरियल: 7 दिनों में वेबड्राइवर सीखें