xpath functions dynamic xpath selenium
यह ट्यूटोरियल उदाहरणों के साथ तत्वों की पहचान करने में XPath फ़ंक्शंस के उपयोग की व्याख्या करता है:
किसी भी वेबसाइट को स्वचालित करने से पहले वस्तु की पहचान करने के लिए आवश्यक है इससे पहले कि हम उसी पर कोई ऑपरेशन कर सकें। जैसा कि हम जानते हैं कि तत्व की पहचान करने का सबसे आसान तरीका आईडी, नाम, लिंक, वर्ग, या उस तत्व के साथ उपलब्ध किसी भी अन्य अद्वितीय विशेषता जैसे तत्व है जहां तत्व रहता है।
यह केवल तभी संभव है जब ये विशेषताएँ मौजूद हों और / या अद्वितीय हों ताकि वस्तु की सही पहचान हो।
=> यहां सेलेनियम शुरुआती गाइड पर एक नज़र डालें।
आप क्या सीखेंगे:
XPath फ़ंक्शंस का अवलोकन
उस परिदृश्य पर चर्चा करें जहां विशेषताएँ आसानी से उपलब्ध नहीं हैं।
समस्या का विवरण
अगर तत्व, जैसे आईडी, नाम, वर्ग, लिंक, आदि तत्व टैग में उपलब्ध नहीं हैं, तो हम तत्व की पहचान कैसे करेंगे?
इसे दिए गए उदाहरण से स्पष्ट रूप से समझा जा सकता है:
में प्रवेश करें ट्विटर
जैसा कि आप उपरोक्त स्क्रीनशॉट में देख सकते हैं, हेडर 'ट्विटर में लॉग इन करें' में इसके साथ कोई विशेषता नहीं है। यह कहने के बाद, हम इस तत्व को पहचानने के लिए किसी भी आईडी, क्लास, लिंक या नाम जैसे किसी भी लोकेटर का उपयोग नहीं कर सकते हैं।
विंडोज़ 10 के लिए सर्वश्रेष्ठ मुफ्त रजिस्ट्री क्लीनर
फ़ायरफ़ॉक्स टूल के फायरपथ प्लगइन ने XPath के नीचे उत्पन्न किया है:
// * (@ id = 'पेज-कंटेनर') / div / div (१) / h1
हमने पृष्ठ संरचना या आईडी के रूप में उपरोक्त XPath के उपयोग की अनुशंसा नहीं की है क्योंकि यह गतिशील रूप से बदल सकता है। अगर हम इस अस्थिर XPath का उपयोग करते हैं, तो हमें XPath को अधिक बार बदलना पड़ सकता है जिसे बनाए रखने में अधिक समय लगता है। यह एक ऐसा मामला है जहां हम आईडी, कक्षा, नाम या लिंक जैसे लोकेटर के साथ सामान्य XPath अभिव्यक्ति का उपयोग नहीं कर सकते हैं।
उपाय
पाठ द्वारा XPath फ़ंक्शंस का उपयोग करते हुए तत्व की पहचान करना
जैसा कि हमारे पास हमारे पास उपलब्ध पाठ 'लॉग इन ट्विटर' है, हम निम्नलिखित का उपयोग करेंगे XPath कार्य करता है तत्व की विशिष्ट पहचान करने के लिए।
- शामिल है () (पाठ द्वारा)
- शुरू-साथ () (पाठ से)
- पाठ ()
XPath फ़ंक्शंस में शामिल हैं (), शुरू-साथ () और पाठ () जब पाठ 'लॉग इन ट्विटर' की मदद से उपयोग किया जाता है, तो हमें तत्व को सही ढंग से पहचानने में मदद मिलेगी, और आगे के ऑपरेशन उसी पर किए जा सकते हैं।
# 1) शामिल हैं () विधि:
वाक्य - विन्यास: 'लॉग इन ट्विटर' वेब-तत्व को खोजने के लिए, निम्न XPath अभिव्यक्तियों में से किसी का उपयोग करें जिसमें शामिल हैं () विधि।
पाठ द्वारा
- // h1 (समाहित है (पाठ), 'लॉग इन'))
- // h1 (शामिल है (पाठ), 'ट्विटर पर'))
नोट: 1 मिलान नोड इंगित करता है कि वेब-तत्व को सफलतापूर्वक पहचान लिया गया है।
उपरोक्त उदाहरण से, यह स्पष्ट है कि तत्व को सही ढंग से पहचानने के लिए () विधि में पूर्ण (पूर्ण) पाठ की आवश्यकता नहीं है। आंशिक पाठ इसे सही ढंग से पहचानने के लिए पर्याप्त है। हालांकि, चयनित आंशिक पाठ अद्वितीय होना चाहिए। उपयोगकर्ता आसानी से तत्व की पहचान कर सकता है, भले ही पृष्ठ की अभिविन्यास में शामिल हैं () विधि की मदद से।
कृपया ध्यान दें कि भले ही आप विधि () विधि के साथ पूर्ण पाठ 'लॉग इन ट्विटर' का उपयोग करते हैं, तत्व को सही तरीके से पहचाना जाएगा।
# 2) प्रारंभ (साथ) विधि:
वाक्य - विन्यास: 'लॉग-इन ट्विटर' वेब-तत्व को खोजने के लिए, निम्न नमूना XPath अभिव्यक्तियों का उपयोग करें जिनकी शुरुआत () विधि से हुई है।
पाठ द्वारा
- // h1 (शुरू-साथ (पाठ), 'लॉग इन'))
- // h1 (शुरू-साथ (पाठ), 'लॉग इन'))
उपरोक्त उदाहरण से, यह स्पष्ट है कि XPath फ़ंक्शंस शुरू-साथ () विधि में तत्व की विशिष्ट पहचान करने के लिए दृश्य पाठ के कम से कम पहले शब्द ('लॉग') की आवश्यकता होती है। यह आंशिक पाठ पर भी काम करता है और यदि हम आंशिक रूप से दृश्यमान पाठ के पहले शब्द को शामिल नहीं करते हैं तो यह विफल हो जाएगा।
कृपया ध्यान दें कि भले ही आप प्रारंभ-साथ () विधि के साथ पूर्ण पाठ 'लॉग इन ट्विटर' का उपयोग करते हैं, तत्व को सही ढंग से पहचाना जाएगा।
आरंभ-साथ अमान्य XPath (): // h1 (शुरू-साथ (पाठ), 'ट्विटर पर'))
ध्यान दें: किसी भी मिलान नोड्स से संकेत मिलता है कि वेब-तत्व की पहचान नहीं की गई है।
# 3) पाठ () विधि:
वाक्य - विन्यास: 'लॉग इन ट्विटर' वेब-तत्व को खोजने के लिए, निम्नलिखित XPath अभिव्यक्ति का उपयोग करें जिसमें पाठ () विधि है।
इस अभिव्यक्ति में, हम उस निरपेक्ष पाठ का उपयोग करते हैं जो प्रारंभ टैग के बीच मौजूद है। यदि हम आंशिक Xpath के साथ पाठ () फ़ंक्शन का उपयोग करते हैं, जैसे कि हम इसमें शामिल हैं () और शुरू-के साथ (), हम तत्व को खोजने में सक्षम नहीं होंगे।
पाठ के लिए अमान्य Xpath ():
एट्रिब्यूट द्वारा XPath फ़ंक्शंस का उपयोग करने वाले तत्व की पहचान करना
जब हम कंटेनर टैग में कुछ विशिष्ट रूप से पहचाने गए विशेषता मान मौजूद होते हैं, तो हम विशेषता के साथ XPath फ़ंक्शन (होते हैं या शुरू होते हैं) का उपयोग करते हैं। विशेषताएँ '@' प्रतीक का उपयोग करके एक्सेस की जाती हैं।
यह दिए गए के साथ स्पष्ट रूप से समझा जा सकता है उदाहरण:
में प्रवेश करें गूगल
# 1) शामिल हैं () विधि:
वाक्य - विन्यास: XPath फ़ंक्शन की सहायता से 'I’m I’m Feeling Lucky' बटन तत्व को विशिष्ट रूप से पहचानने के लिए इसमें () विशेषता की सहायता से शामिल हैं।
(i) मूल्य विशेषता द्वारा:
- // इनपुट (सम्मिलित है (@ मान, 'फ़ीलिंग'))
- // इनपुट (समाहित है (@ मान, 'लकी'))
उपरोक्त छवियों से, यह समझ में आता है कि 'मान' या 'लकी' के साथ () विधि के साथ विशेषता मान का उपयोग करने से विशिष्ट तत्व की पहचान होगी। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि भले ही हम मूल्य विशेषता की पूरी सामग्री का उपयोग करते हैं, यह तत्व की सही पहचान करेगा।
(ii) नाम विशेषता द्वारा:
//input(contains(@name=’btnI’))
एक्सपीथ फ़ंक्शन के लिए अमान्य मामला विशेषता के साथ:
सम्मिलित () और प्रारंभ () विधि के साथ उपयोग की जाने वाली विशेषता के चयन के बारे में हमें बहुत सावधान रहने की जरूरत है। यदि विशेषता मान अद्वितीय नहीं है, तो हम तत्व की विशिष्ट पहचान नहीं कर पाएंगे।
मान लीजिए, यदि हम 'I’mm Feeling Lucky' बटन की पहचान करते समय 'टाइप' विशेषता लेते हैं, तो XPath ने काम नहीं किया।
2 मिलान नोड्स इंगित करते हैं कि तत्व को सही ढंग से पहचाना नहीं गया है। यहाँ प्रकार विशेषता मान अद्वितीय नहीं है।
# 2) प्रारंभ (साथ) विधि:
विशेषता के साथ प्रारंभ-साथ () विधि बहुत उपयोगी होती है जब हमें उन तत्वों को खोजना होता है जिनकी विशेषता का पूर्व भाग नियत रहता है जबकि बाद वाला भाग बदलता रहता है। जब ऑब्जेक्ट गतिशील रूप से अपनी विशेषताओं के मूल्य को बदल रहे हैं तो यह दृष्टिकोण बहुत उपयोगी है। अगर हम इसी तरह के तत्वों को पकड़ना चाहते हैं तो इसका इस्तेमाल किया जा सकता है।
के लिए जाओ फेसबुक लॉग इन
पहला टेक्स्ट बॉक्स 'फर्स्ट नेम' और दूसरा टेक्स्ट बॉक्स साइन-अप फॉर्म के 'सरनेम' का निरीक्षण करें।
पहला टेक्स्ट बॉक्स 'फर्स्ट नेम' पहचाना जाता है।
दूसरे टेक्स्ट बॉक्स 'सरनेम' की पहचान की गई है।
फेसबुक के लिए साइन अप के लिए पहचाने जाने वाले दोनों टेक्स्ट बॉक्स में, आईडी विशेषताओं का शुरुआती हिस्सा अपरिवर्तित रहता है।
पहला नाम आईडी = 'u_0_2'
उपनाम आईडी = 'u_0_4 '
यह वह परिदृश्य है जहां हम इस तरह के आईडी विशेषता के तहत सभी तत्वों को प्राप्त करने के लिए स्टार्ट-इन () विशेषता का उपयोग कर सकते हैं। कृपया ध्यान दें कि हम केवल इन दो क्षेत्रों को अपने संदर्भ के लिए ले जा रहे हैं। हालाँकि, आईडी के साथ स्क्रीन पर अधिक क्षेत्र हो सकते हैं जो 'u_0_' से शुरू होते हैं।
प्रारंभ-साथ () (विशेषता आईडी)
//input(starts-with(@id,”u_0_”))
महत्वपूर्ण लेख: यहां हमने सिंगल कोट्स के बजाय डबल कोट्स का इस्तेमाल किया है। लेकिन सिंगल कोट्स स्टार्ट-विथ विधि के साथ भी काम करेंगे।
11 मिलान नोड्स से संकेत मिलता है कि इस XPath ने उन सभी तत्वों की पहचान की है जो उन आईडी 'u_0_' से शुरू होते हैं। आईडी का उत्तरार्द्ध (पहले नाम के लिए 2, उपनाम के लिए 4, आदि) निर्धारित करता है कि हम विशिष्ट रूप से तत्व की पहचान कैसे करते हैं।
हम स्टार्ट-विथ फंक्शन एट्रीब्यूट का उपयोग कर सकते हैं जहाँ हमें सूची में समान प्रकार के तत्वों को इकट्ठा करने की आवश्यकता होती है, और तत्व को विशिष्ट रूप से पहचानने के लिए एक सामान्य तरीके से तर्क को दरकिनार करते हुए उनमें से एक को चुनते हैं।
हमारे लाभ के लिए शुरू-के साथ समारोह का उपयोग करने के लिए नीचे दिए गए उदाहरण का पालन करें।
नमूना कोड:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input(starts-with(@id,”u_0_”+identifier ))')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String() args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
ध्यान दें: ग्रहण दोहरे कोट्स के उपयोग की अनुमति नहीं दे सकता है। डायनेमिक XPath बनाने के लिए आपको विभिन्न कोड का सहारा लेना पड़ सकता है।
संदर्भ के लिए नमूना कोड दिया गया है। आप इसे उन सभी तत्वों और परिचालनों में फिट करने के लिए बढ़ा सकते हैं, जिन्हें आप करना चाहते हैं और वे मूल्य जिन्हें आप (पाठ क्षेत्रों के मामले में) दर्ज करना चाहते हैं ताकि कोड को और अधिक बहुमुखी बनाया जा सके।
निष्कर्ष
इस लेख में बताया गया है कि कैसे हम XPath फ़ंक्शंस का उपयोग कर सकते हैं (), प्रारंभ-साथ () और टेक्स्ट () विशेषता और पाठ के साथ HTML डोम संरचना पर तत्वों की विशिष्ट पहचान के लिए।
नीचे कुछ टिप्पणियां दी गई हैं जिन्हें हम XPath फंक्शंस के लिए आकर्षित कर सकते हैं:
- XPath में 'समाहित ()' विधि का उपयोग करें यदि आप आंशिक रूप से दृश्यमान पाठ या विशेषता को जानते हैं।
- यदि आप प्रारंभिक आंशिक स्थिर दृश्यमान पाठ या विशेषता जानते हैं, तो XPath में 'शुरू-साथ ()' विधि का उपयोग करें।
- आप निरपेक्ष पाठ या विशेषता के साथ () और शुरू-साथ () विधि का भी उपयोग कर सकते हैं।
- यदि आप पूर्ण दृश्य पाठ के बारे में जानते हैं तो XPath में 'टेक्स्ट ()' पद्धति का उपयोग करें।
- आप आंशिक पाठ के साथ पाठ () विधि का उपयोग नहीं कर सकते।
- यदि आप XPath में प्रारंभिक पाठ का उपयोग नहीं करते हैं या यदि प्रारंभिक पाठ लगातार बदल रहा है, तो आप स्टार्ट-अप () पद्धति का उपयोग नहीं कर सकते।
अगले ट्यूटोरियल में, हम सीखेंगे कि उपलब्ध वेबपेज पर तत्वों के स्थान को और बढ़ाने के लिए XPath फंक्शंस के साथ XPath Axes का उपयोग कैसे करें।
=> आसान सेलेनियम प्रशिक्षण श्रृंखला के माध्यम से पढ़ें।
अनुशंसित पाठ
- सेलेनियम लोकेटर: सेलेनियम (उदाहरण) में XPath का उपयोग कर वेब तत्वों को पहचानें
- सेलेनियम स्क्रिप्ट में वेब टेबल्स, फ्रेम्स और डायनामिक एलिमेंट्स को हैंडल करना - सेलेनियम ट्यूटोरियल # 18
- पायथन स्ट्रिंग फ़ंक्शंस
- जेएमटर में एक्सपैथ एक्सट्रैक्टर पोस्ट-प्रोसेसर
- सेलेनियम उदाहरणों के साथ पाठ ट्यूटोरियल द्वारा तत्व का पता लगाएं
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- एक व्यापक XPath ट्यूटोरियल - XML पथ भाषा
- सेलेनियम वेबड्राइवर का परिचय - सेलेनियम ट्यूटोरियल # 8