सेलेनियम स्वचालन में, यदि तत्व सामान्य लोकेटर जैसे आईडी, वर्ग, नाम आदि से नहीं मिलते हैं, तो XPath का उपयोग वेब पेज पर एक तत्व खोजने के लिए किया जाता है।
इस ट्यूटोरियल में, हम जटिल या गतिशील तत्वों को खोजने के लिए xpath और विभिन्न XPath अभिव्यक्ति के बारे में सीखेंगे, जिनकी विशेषताओं को ताज़ा या किसी भी संचालन पर गतिशील रूप से बदल जाता है।
इस XPath ट्यूटोरियल में, आप सीखेंगे-
- XPath क्या है?
- एक्स-पथ के प्रकार
- सम्पूर्ण XPath
- रिश्तेदार XPath
- बेसिक XPath
- शामिल हैं ()
- OR & AND का उपयोग करना
- समारोह के साथ शुरू होता है
- पाठ ()
- XPath कुल्हाड़ियों तरीकों
- निम्नलिखित
- पूर्वज
- बच्चा
- के पिछले
- निम्नलिखित-भाई
- माता-पिता
- स्वयं
- वंशज
सेलेनियम में XPath क्या है?
सेलेनियम में XPath एक XML पथ है जो पृष्ठ के HTML संरचना के माध्यम से नेविगेशन के लिए उपयोग किया जाता है। यह XML पथ अभिव्यक्ति का उपयोग करके वेब पेज पर किसी भी तत्व को खोजने के लिए एक वाक्यविन्यास या भाषा है। XPath का उपयोग HTML और XML दोनों दस्तावेज़ों के लिए किया जा सकता है, जो HTML DOM संरचना का उपयोग करके किसी वेबपेज पर किसी भी तत्व का स्थान खोज सकता है।
सेलेनियम में XPath का मूल प्रारूप नीचे स्क्रीन शॉट के साथ समझाया गया है।
XPath का मूल स्वरूप
XPath सेलेनियम के लिए सिंटैक्स:
XPath में वेब पेज पर स्थित तत्व का पथ शामिल है। XPath बनाने के लिए मानक XPath सिंटैक्स है।
Xpath = // tagname [@ विशेषता = 'मान']
- //: वर्तमान नोड का चयन करें।
- Tagname: विशेष नोड का Tagname।
- @: विशेषता चुनें।
- विशेषता: नोड का नाम दें।
- मूल्य: विशेषता का मूल्य।
वेब पेजों पर तत्व को ठीक से खोजने के लिए विभिन्न प्रकार के लोकेटर हैं:
XPath लोकेटर | वेब पेज पर विभिन्न तत्वों का पता लगाएं |
ईद | तत्व की आईडी द्वारा तत्व को खोजने के लिए |
कक्षा का नाम | तत्व के Classname द्वारा तत्व को खोजने के लिए |
नाम | तत्व के नाम से तत्व को खोजने के लिए |
लिंक पाठ | लिंक के पाठ द्वारा तत्व को खोजने के लिए |
XPath | XPath को वेब पेज के विभिन्न तत्वों के बीच गतिशील तत्व और ट्रैवर्स को खोजने के लिए आवश्यक है |
सीएसएस पथ | सीएसएस पथ उन तत्वों का भी पता लगाता है जिनका कोई नाम, वर्ग या आईडी नहीं है। |
एक्स-पथ के प्रकार
XPath दो प्रकार के होते हैं:
1) पूर्ण XPath
2) सापेक्ष XPath
संपूर्ण XPath:
यह तत्व को खोजने का सीधा तरीका है, लेकिन पूर्ण XPath का नुकसान यह है कि यदि तत्व के मार्ग में कोई बदलाव किए गए हैं, तो XPath विफल हो जाता है।
XPath की प्रमुख विशेषता यह है कि यह एकल फ़ॉरवर्ड स्लैश (/) से शुरू होता है, जिसका अर्थ है कि आप रूट नोड से तत्व का चयन कर सकते हैं।
नीचे स्क्रीन में दिखाए गए तत्व की एक पूर्ण xpath अभिव्यक्ति का उदाहरण है।
नोट: आप इस http://demo.guru99.com/test/selenium-xpath.html पर निम्नलिखित XPath अभ्यास कर सकते हैं
यदि वीडियो उपलब्ध नहीं है तो यहां क्लिक करें
संपूर्ण XPath:
/ html / शरीर / div [2] / div [1] / div / h4 [1] / b / html [1] / शरीर [1] / div [2] / div [1] / div [1] / h4 [१] / बी [१]
सम्पूर्ण XPath
रिश्तेदार Xpath:
सापेक्ष Xpath HTML DOM संरचना के मध्य से शुरू होता है। यह डबल फॉरवर्ड स्लैश (//) से शुरू होता है। यह वेबपेज पर कहीं भी तत्वों को खोज सकता है, इसका मतलब लंबे xpath लिखने की आवश्यकता नहीं है और आप HTML DOM संरचना के मध्य से शुरू कर सकते हैं। सापेक्ष Xpath को हमेशा पसंद किया जाता है क्योंकि यह मूल तत्व से पूर्ण पथ नहीं है।
नीचे स्क्रीन में दिखाए गए एक ही तत्व के एक रिश्तेदार XPath अभिव्यक्ति का उदाहरण नीचे दिया गया है। यह एक्सपीथ द्वारा तत्व को खोजने के लिए उपयोग किया जाने वाला सामान्य प्रारूप है।
यदि वीडियो उपलब्ध नहीं है तो यहां क्लिक करें
सापेक्ष XPath: // div [@ वर्ग = 'फ़ीचर्ड-बॉक्स क्लाउडमैनेज 1'] // h4 [1] // 1 [1]
रिश्तेदार XPath
एक्सपीथ एक्सिस क्या हैं।
एक्सपीथ एक्सिस वर्तमान संदर्भ नोड से एक्सएमएल दस्तावेज़ में विभिन्न नोड्स की खोज करते हैं। एक्सपीथ एक्सिस डायनामिक तत्वों को खोजने के लिए उपयोग की जाने वाली विधियां हैं, जो सामान्य रूप से संभव नहीं है एक्सपीथ विधि से कोई आईडी, क्लासनाम, नाम, आदि।
एक्सिस विधियों का उपयोग उन तत्वों को खोजने के लिए किया जाता है, जो गतिशील रूप से ताज़ा या किसी अन्य संचालन पर बदलते हैं। आमतौर पर सेलेनियम वेबड्राइवर में कुछ कुल्हाड़ियों का इस्तेमाल किया जाता है जैसे कि बच्चे, माता-पिता, पूर्वज, सहोदर, पूर्ववर्ती, स्वयं आदि।
सेलेनियम में XPath हैंडलिंग जटिल और गतिशील तत्वों का उपयोग करना
1) बेसिक XPath:
XPath एक्सप्रेशन नीचे दिए गए उदाहरण के रूप में XML डॉक्यूमेंट से आईडी, नाम, क्लासनाम आदि जैसी विशेषताओं के आधार पर नोड्स या नोड्स की सूची का चयन करता है।
Xpath = // इनपुट [@ नाम = 'uid']
यहाँ http://demo.guru99.com/test/selenium-xpath.html पृष्ठ तक पहुँचने के लिए एक लिंक दिया गया है
बेसिक XPath
कुछ और बुनियादी xpath अभिव्यक्ति:
Xpath = // इनपुट [@ टाइप = 'टेक्स्ट']Xpath = // लेबल [@ id = 'message23']Xpath = // input [@ value = 'RESET']Xpath = // * [@ वर्ग = 'बैरन']Xpath = // एक [@ href = 'http: //demo.guru99.com/']Xpath = //img Did@src='//cdn.guru99.com/images/home/java.png.webp ']
2) शामिल हैं ():
शामिल () XPath अभिव्यक्ति में उपयोग की जाने वाली एक विधि है। इसका उपयोग तब किया जाता है जब किसी विशेषता का मूल्य गतिशील रूप से बदलता है, उदाहरण के लिए, लॉगिन जानकारी।
इस फीचर में आंशिक पाठ के साथ तत्व को खोजने की क्षमता है, जैसा कि XPath उदाहरण में दिखाया गया है।
इस उदाहरण में, हमने विशेषता के आंशिक पाठ मान का उपयोग करके तत्व को पहचानने का प्रयास किया। XPath एक्सप्रेशन के नीचे आंशिक मूल्य 'सब' का उपयोग सबमिट बटन के स्थान पर किया गया है। यह देखा जा सकता है कि तत्व सफलतापूर्वक पाया जाता है।
'टाइप' का पूरा मूल्य 'सबमिट' है, लेकिन केवल आंशिक मूल्य 'सब' का उपयोग करना।
Xpath = // * [(@ प्रकार, 'उप')]
'नाम' का पूरा मान 'btnLogin' है, लेकिन केवल आंशिक मूल्य 'btn' का उपयोग करना।
Xpath = // * [शामिल हैं (@ नाम, 'बीटीएन')]
उपरोक्त अभिव्यक्ति में, हमने एक विशेषता के रूप में 'नाम' और आंशिक स्क्रीनशॉट के रूप में 'बीटीएन' को नीचे स्क्रीनशॉट में दिखाया गया है। इससे 2 तत्व (LOGIN & RESET) मिलेंगे क्योंकि उनका 'नाम' विशेषता 'btn' से शुरू होता है।
इसी प्रकार, नीचे की अभिव्यक्ति में, हमने एक विशेषता के रूप में 'आईडी' और आंशिक मूल्य के रूप में 'संदेश' लिया है। इससे 2 तत्व मिलेंगे ('उपयोगकर्ता-आईडी रिक्त नहीं होनी चाहिए' और 'पासवर्ड रिक्त नहीं होना चाहिए') क्योंकि इसका 'नाम' विशेषता 'संदेश' से शुरू होती है।
Xpath = // * [शामिल है (@ आईडी, 'संदेश')]
नीचे की अभिव्यक्ति में, हमने लिंक के "पाठ" को एक विशेषता के रूप में लिया है और 'यहाँ' को आंशिक मूल्य के रूप में नीचे स्क्रीनशॉट में दिखाया गया है। यह लिंक ('यहाँ') मिलेगा क्योंकि यह 'यहाँ' पाठ प्रदर्शित करता है।
Xpath = // * [(पाठ (), 'यहाँ')]Xpath = // * [शामिल हैं (@ href, 'guru99.com')]
3) OR & AND का उपयोग करना:
OR अभिव्यक्ति में, दो स्थितियों का उपयोग किया जाता है, चाहे 1 स्थिति या दूसरी स्थिति सत्य हो। यह भी लागू होता है यदि कोई एक शर्त सही है या शायद दोनों। इसका मतलब है कि तत्व को खोजने के लिए किसी एक स्थिति को सच होना चाहिए।
XPath एक्सप्रेशन के नीचे, यह उन तत्वों की पहचान करता है जिनकी एकल या दोनों स्थितियाँ सत्य हैं।
Xpath = // * [@ टाइप = 'सबमिट' या @ नाम = 'btnReset']
दोनों तत्वों को "LOGIN" तत्व के रूप में विशेषता 'प्रकार' और "रीसेट" तत्व को विशेषता 'नाम' के रूप में हाइलाइट करना।
और अभिव्यक्ति में, दो स्थितियों का उपयोग किया जाता है, तत्व को खोजने के लिए दोनों स्थितियों को सही होना चाहिए। यह तत्व खोजने में विफल रहता है यदि कोई एक स्थिति झूठी है।
Xpath = // input [@ type = 'submit' और @ name = 'btnLogin']
नीचे दिए गए अभिव्यक्ति में, 'लोगिन' तत्व को उजागर करना, क्योंकि इसमें विशेषता 'प्रकार' और 'नाम' दोनों हैं।
4) Xpath प्रारंभ-साथ
XPath start-with () वेब फ़ंक्शन को खोजने के लिए उपयोग किया जाने वाला एक फ़ंक्शन है जिसका विशेषता मान वेबपेज पर रिफ्रेश या अन्य डायनेमिक ऑपरेशंस पर बदल जाता है। इस पद्धति में, विशेषता का प्रारंभिक पाठ उस तत्व को खोजने के लिए मिलान किया जाता है जिसका गुण मान गतिशील रूप से बदलता है। आप उन तत्वों को भी पा सकते हैं जिनकी विशेषता मूल्य स्थिर है (परिवर्तन नहीं)।
उदाहरण के लिए -: मान लीजिए कि विशेष तत्व की आईडी गतिशील रूप से बदल जाती है:
Id = "message12"
Id = "message345"
Id = "message8769"
और इतने पर ... लेकिन प्रारंभिक पाठ समान है। इस मामले में, हम स्टार्ट-विद एक्सप्रेशन का उपयोग करते हैं।
नीचे दिए गए अभिव्यक्ति में, आईडी "संदेश" के साथ दो तत्व हैं (यानी, 'यूजर-आईडी रिक्त नहीं होना चाहिए' और 'पासवर्ड रिक्त नहीं होना चाहिए')। नीचे के उदाहरण में, XPath उन तत्वों को खोजता है जिनकी 'आईडी' 'संदेश' से शुरू होती है।
Xpath = // लेबल [शुरू-साथ (@ आईडी, 'संदेश')]
5) XPath टेक्स्ट () फ़ंक्शन
XPath पाठ () फ़ंक्शन सेलेनियम webdriver जो एक वेब तत्व के पाठ पर आधारित तत्वों का पता लगाने का प्रयोग किया जाता है की एक अंतर्निहित कार्य है। यह सटीक पाठ तत्वों को खोजने में मदद करता है और यह पाठ नोड्स के सेट के भीतर तत्वों का पता लगाता है। स्थित होने वाले तत्व स्ट्रिंग रूप में होने चाहिए।
इस अभिव्यक्ति में, टेक्स्ट फ़ंक्शन के साथ, हम तत्व को सटीक टेक्स्ट मैच के साथ खोजते हैं, जैसा कि नीचे दिखाया गया है। हमारे मामले में, हम "यूजरआईडी" पाठ के साथ तत्व को ढूंढते हैं।
Xpath = // td [text () = 'UserID']
6) XPath कुल्हाड़ियों तरीकों:
इन XPath कुल्हाड़ियों विधियों का उपयोग जटिल या गतिशील तत्वों को खोजने के लिए किया जाता है। नीचे हम इनमें से कुछ तरीके देखेंगे।
इन XPath कुल्हाड़ियों विधि को दर्शाने के लिए, हम गुरु99 बैंक डेमो साइट का उपयोग करेंगे।
क) निम्नलिखित:
वर्तमान नोड के दस्तावेज़ में सभी तत्वों का चयन करता है () [प्रयोक्ता इनपुट इनपुट बॉक्स वर्तमान नोड है] जैसा कि नीचे स्क्रीन में दिखाया गया है।
Xpath = // * [@ टाइप = 'टेक्स्ट'] // निम्नलिखित :: इनपुट
3 "इनपुट" नोड्स हैं जो "निम्नलिखित" अक्ष- पासवर्ड, लॉगिन और रीसेट बटन का उपयोग करके मेल खाते हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath विधि का उपयोग कर सकते हैं:
Xpath = // * [@ प्रकार = 'पाठ'] // निम्नलिखित :: इनपुट [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार XPath बदल सकते हैं
… और इसी तरह।इनपुट के रूप में '1' के साथ, नीचे स्क्रीन शॉट विशेष नोड को ढूँढता है जो 'पासवर्ड' इनपुट बॉक्स तत्व है।
बी) पूर्वज:
पूर्वज अक्ष वर्तमान नोड के सभी पूर्वजों तत्व (दादा दादी, माता-पिता, आदि) का चयन करता है जैसा कि नीचे स्क्रीन में दिखाया गया है।
नीचे की अभिव्यक्ति में, हम वर्तमान नोड के पूर्वजों तत्व ("उद्यम परीक्षण" नोड) पा रहे हैं।
Xpath = // * [पाठ () = 'उद्यम परीक्षण'] // पूर्वज :: div
"पूर्वज" अक्ष का उपयोग करके 13 "div" नोड्स मेल खाते हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं, जहां आप अपनी आवश्यकता के अनुसार नंबर 1, 2 को बदल सकते हैं:
Xpath = // * [पाठ () = 'उद्यम परीक्षण'] // पूर्वज :: div [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार XPath बदल सकते हैं
… और इसी तरह।ग) बच्चा:
नीचे स्क्रीन में दिखाए अनुसार वर्तमान नोड (जावा) के सभी बच्चों के तत्वों का चयन करता है।
Xpath = // * [@ id = 'java_technologies'] // बच्चा :: ली
"बच्चे" अक्ष का उपयोग करके 71 "ली" नोड्स मेल खाते हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए xpath का उपयोग कर सकते हैं:
Xpath = // * [@ id = 'java_technologies'] // बच्चे :: li [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार xpath बदल सकते हैं
… और इसी तरह।डी) पूर्ववर्ती:
वर्तमान नोड से पहले आने वाले सभी नोड्स का चयन करें जैसा कि नीचे स्क्रीन में दिखाया गया है।
नीचे की अभिव्यक्ति में, यह "लॉगिन" बटन से पहले सभी इनपुट तत्वों की पहचान करता है जो उपयोगकर्ता और पासवर्ड इनपुट तत्व है।
Xpath = // * [@ प्रकार = 'सबमिट'] // पूर्ववर्ती :: इनपुट
"पूर्ववर्ती" अक्ष का उपयोग करके मिलान करने वाले 2 "इनपुट" नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath = // * [@ टाइप = 'सबमिट'] // पूर्ववर्ती :: इनपुट [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार xpath बदल सकते हैं
… और इसी तरह।ई) निम्नलिखित-भाई:
संदर्भ नोड के निम्नलिखित भाई-बहनों का चयन करें। भाई-बहन वर्तमान नोड के समान स्तर पर हैं जैसा कि नीचे स्क्रीन में दिखाया गया है। यह वर्तमान नोड के बाद तत्व को ढूंढेगा।
xpath = // * [@ टाइप = 'सबमिट'] // निम्नलिखित-सिबलिंग :: इनपुट
एक इनपुट नोड्स "निम्न-सिबलिंग" अक्ष का उपयोग करके मिलान करता है।
च) अभिभावक:
नीचे स्क्रीन में दिखाए अनुसार वर्तमान नोड के जनक का चयन करता है।
Xpath = // * [@ id = 'rt-feature'] // माता-पिता :: div
"पैरेंट" एक्सिस का उपयोग करके 65 "div" नोड्स मिलते हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath = // * [@ id = 'rt-feature'] // माता-पिता :: div [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार XPath बदल सकते हैं
… और इसी तरह।छ) स्व:
वर्तमान नोड या 'स्व' का चयन करता है, इसका अर्थ है कि नोड को नीचे स्क्रीन में दिखाया गया है।
"स्व" अक्ष का उपयोग करके एक नोड मिलान। यह हमेशा केवल एक नोड पाता है क्योंकि यह आत्म तत्व का प्रतिनिधित्व करता है।
Xpath = // * [@ प्रकार = 'पासवर्ड'] // आत्म :: इनपुट
ज) वंशज:
नीचे स्क्रीन में दिखाए अनुसार वर्तमान नोड के वंशज का चयन करता है।नीचे की अभिव्यक्ति में, यह सभी तत्व वंशज को वर्तमान तत्व ('मेन बॉडी सराउंड फ्रेम एलीमेंट) की पहचान करता है जिसका अर्थ है नोड के नीचे (बच्चे का नोड, पोते का नोड, आदि)।
Xpath = // * [@ id = 'rt-feature'] // descendant :: a
"वंशज" अक्ष का उपयोग करके मिलान के 12 "लिंक" नोड हैं। यदि आप किसी विशेष तत्व पर ध्यान केंद्रित करना चाहते हैं तो आप नीचे दिए गए XPath का उपयोग कर सकते हैं:
Xpath = // * [@ id = 'rt-feature'] // descendant :: a [1]
[1], [२] लगाकर आप आवश्यकता के अनुसार XPath बदल सकते हैं
… और इसी तरह।सारांश:
XPath को वेब पेज पर एक तत्व खोजने के लिए आवश्यक है कि उस विशेष तत्व पर एक ऑपरेशन करना है।
- सेलेनियम XPath दो प्रकार के होते हैं:
- सम्पूर्ण XPath
- रिश्तेदार XPath
- XPath Axes डायनामिक तत्वों को खोजने के लिए उपयोग की जाने वाली विधियाँ हैं, जो अन्यथा सामान्य XPath विधि द्वारा खोजना संभव नहीं है
- एक्सपीथ एक्सप्रेशन से आईडी, नेम, क्लासनाम आदि जैसी विशेषताओं के आधार पर एक्सपीथ एक्सप्रेशन नोड्स या नोड्स की सूची का चयन करते हैं।