सेलेनियम वेबड्राइवर में वेब टेबल को कैसे हैंडल करें

विषय - सूची:

Anonim

एक HTML वेब टेबल पढ़ना

ऐसे समय होते हैं जब हमें HTML तालिकाओं के भीतर तत्वों (आमतौर पर ग्रंथों) तक पहुंचने की आवश्यकता होती है। हालांकि, वेब डिजाइनर के लिए तालिका में एक निश्चित सेल को एक आईडी या नाम विशेषता प्रदान करना बहुत ही कम है। इसलिए, हम "By.id ()", "By.name ()", या "By.csselector ()" जैसी सामान्य विधियों का उपयोग नहीं कर सकते हैं। इस मामले में, सबसे विश्वसनीय विकल्प "बाय.एक्सपैथ ()" विधि का उपयोग करके उन्हें एक्सेस करना है।

इस ट्यूटोरियल में, आप सीखेंगे-

  • टेबल के लिए XPath कैसे लिखें
  • नेस्टेड टेबल तक पहुँचना
  • सहायक के रूप में विशेषताओं का उपयोग करना
  • शॉर्टकट: सेलेनियम में टेबल तक पहुंचने के लिए निरीक्षण तत्व का उपयोग करें

टेबल के लिए XPath कैसे लिखें

नीचे दिए गए HTML कोड पर विचार करें।

हम XPath का उपयोग सेल के आंतरिक पाठ को प्राप्त करने के लिए करेंगे जिसमें पाठ "चौथी सेल" होगा।

चरण 1 - मूल तत्व (तालिका) सेट करें

WebDriver में XPath लोकेटर हमेशा एक डबल फ़ॉरवर्ड स्लैश "//" से शुरू होता है और उसके बाद मूल तत्व द्वारा । चूंकि हम तालिकाओं के साथ काम कर रहे हैं, मूल तत्व हमेशा <तालिका> टैग होना चाहिए। हमारे XPath लोकेटर का पहला भाग, इसलिए, "// टेबल" से शुरू होना चाहिए।

चरण 2 - बच्चे के तत्वों को जोड़ें

<तालिका> के अंतर्गत तत्व है, इसलिए हम कह सकते हैं कि <तालिका> का "बच्चा" है। और यह भी, <टेबल> का "जनक" है। XPath में सभी बाल तत्वों को उनके मूल तत्व के दाईं ओर रखा गया है, एक फॉरवर्ड स्लैश के साथ अलग किया गया है "/" ​​जैसा कि नीचे दिखाया गया है।

चरण 3 - विधेय जोड़ें

तत्व में दो टैग शामिल हैं। अब हम कह सकते हैं कि ये दो टैग के "बच्चे" हैं। नतीजतन, हम कह सकते हैं कि दोनों तत्वों का जनक है।

एक और बात हम निष्कर्ष निकाल सकते हैं कि दो तत्व भाई बहन हैं। भाई-बहन एक ही माता-पिता होने वाले बाल तत्वों का उल्लेख करते हैं

तक पहुंचने के लिए हम एक्सेस करना चाहते हैं (टेक्स्ट "चौथे सेल" के साथ), हमें पहले दूसरे को एक्सेस करना होगा और पहले को नहीं। यदि हम बस "// टेबल / tbody / tr" लिखते हैं, तो हम पहले टैग तक पहुंचेंगे।

तो, हम दूसरे का उपयोग कैसे करते हैं? इसका उत्तर यह है कि Predicates का उपयोग करें ।

विधेयकों की संख्या या HTML विशेषताएँ वर्ग कोष्ठक की एक जोड़ी में संलग्न हैं "[]" जो अपने भाई-बहनों से एक बच्चे के तत्व को अलग करता है । चूंकि हमें एक्सेस करने की आवश्यकता है, इसलिए दूसरा है, हम "[2]" को विधेय के रूप में उपयोग करेंगे।

यदि हम किसी भी विधेय का उपयोग नहीं करेंगे, तो XPath पहले भाई-बहन को एक्सेस करेगा। इसलिए, हम इनमें से किसी भी XPath कोड का उपयोग करके पहले तक पहुंच सकते हैं।

चरण 4 - उपयुक्त विधेयकों का उपयोग करके सफल बाल तत्वों को जोड़ें

अगला तत्व जिसे हमें एक्सेस करने की आवश्यकता है वह दूसरा है। चरण 2 और 3 से हमने जो सिद्धांत सीखे हैं, उन्हें लागू करते हुए, हम अपने XPath कोड को अंतिम रूप में दिखाए गए के समान होने के लिए अंतिम रूप देंगे।

अब जब हमारे पास सही XPath लोकेटर है, तो हम पहले ही उस सेल तक पहुंच सकते हैं जो हम चाहते थे और नीचे दिए गए कोड का उपयोग करके इसका आंतरिक पाठ प्राप्त कर सकें। यह मानता है कि आपने अपने सी ड्राइव में ऊपर दिए गए HTML कोड को "newhtml.html" के रूप में सहेजा है।

सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/write-xpath-table.html";WebDriver ड्राइवर = नया FirefoxDriver ();Driver.get (baseUrl);स्ट्रिंग इनरटेक्स्ट = driver.findElement (By.xpath ("// table / tbody / tr [2] / td [2]"))। GetText ();System.out.println (innerText);Driver.quit ();}}

नेस्टेड टेबल तक पहुँचना

ऊपर चर्चा किए गए समान सिद्धांत नेस्टेड तालिकाओं पर लागू होते हैं। नेस्टेड टेबल अन्य टेबल के भीतर स्थित टेबल हैं । एक उदाहरण नीचे दिया गया है।

"// माता-पिता / बच्चे" का उपयोग करके "4-5-6" पाठ के साथ सेल का उपयोग करने और पिछले अनुभाग से अवधारणाओं की भविष्यवाणी करने के लिए, हमें नीचे XPath कोड के साथ आने में सक्षम होना चाहिए।

नीचे दिया गया WebDriver कोड उस सेल के आंतरिक पाठ को पुनः प्राप्त करने में सक्षम होना चाहिए जिसे हम एक्सेस कर रहे हैं।

सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/accessing-nested-table.html";WebDriver ड्राइवर = नया FirefoxDriver ();Driver.get (baseUrl);स्ट्रिंग इनरटेक्स्ट = driver.findElement (By.xpath ("// table / tbody / tr [2] / td [2] / table / tbody / tr / td [2]"))। GetText ();System.out.println (innerText);Driver.quit ();}

नीचे दिया गया आउटपुट पुष्टि करता है कि आंतरिक तालिका सफलतापूर्वक एक्सेस की गई थी।

सहायक के रूप में विशेषताओं का उपयोग करना

यदि तत्व HTML कोड के भीतर गहराई से लिखा गया है, जैसे कि विधेय के लिए उपयोग की जाने वाली संख्या निर्धारित करना बहुत कठिन है, हम उस तत्व की अनूठी विशेषता का उपयोग कर सकते हैं।

नीचे दिए गए उदाहरण में, "न्यूयॉर्क से शिकागो" सेल बुध टूर्स होमपेज के HTML कोड में गहरी स्थित है।

इस स्थिति में, हम तालिका की विशिष्ट विशेषता (चौड़ाई = "270") का उपयोग विधेय के रूप में कर सकते हैं। विशेषताओं का उपयोग @ प्रतीक के साथ उन्हें उपसर्ग द्वारा भविष्यवाणी के रूप में किया जाता है । ऊपर दिए गए उदाहरण में, "न्यूयॉर्क से शिकागो" सेल चौथे के पहले में स्थित है, और इसलिए हमारे XPath को नीचे दिखाया गया है।

याद रखें कि जब हम XPath कोड को जावा में डालते हैं, तो हमें "270" के दोनों तरफ दोहरे उद्धरण चिह्नों के लिए एस्केप कैरेक्टर बैकवर्ड स्लैश "\" का उपयोग करना चाहिए, ताकि बाय.एक्सपैथ () का स्ट्रिंग तर्क समय से पहले समाप्त न हो। ।

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

सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/newtours/";WebDriver ड्राइवर = नया FirefoxDriver ();Driver.get (baseUrl);स्ट्रिंग इनरटेक्स्ट = driver.findElement (द्वारा.xpath ("// तालिका [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);Driver.quit ();}

शॉर्टकट: सेलेनियम में टेबल तक पहुंचने के लिए निरीक्षण तत्व का उपयोग करें

यदि किसी तत्व की संख्या या विशेषता प्राप्त करना बहुत कठिन या असंभव है, तो XPath कोड जनरेट करने का सबसे तेज़ तरीका इंसपेक्ट एलिमेंट का उपयोग करना है।

बुध टूर्स होमपेज से नीचे के उदाहरण पर विचार करें।

चरण 1

XPath कोड प्राप्त करने के लिए Firebug का उपयोग करें।

चरण 2

पहले "टेबल" मूल तत्व को देखें और उसके बाईं ओर सब कुछ हटा दें।

चरण 3

डबल फॉरवर्ड स्लैश "//" के साथ कोड के शेष भाग को प्रीफ़िक्स करें और इसे अपने वेबड्राइवर कोड पर कॉपी करें।

नीचे दिया गया WebDriver कोड उस तत्व के आंतरिक पाठ को सफलतापूर्वक प्राप्त करने में सक्षम होगा जिसे हम एक्सेस कर रहे हैं।

सार्वजनिक स्थैतिक शून्य main (String [] args) {स्ट्रिंग आधार = "http://demo.guru99.com/test/newtours/";WebDriver ड्राइवर = नया FirefoxDriver ();Driver.get (baseUrl);स्ट्रिंग इनरटेक्स्ट = driver.findElement (द्वारा.xpath ("// टेबल / tbody / tr / td [2]"+ "// टेबल / tbody / tr [4] / td /"+ "तालिका / tbody / tr / td [2] /"+ "तालिका / tbody / tr [2] / td [1] /"+ "तालिका [2] / tbody / tr [3] / td [2] / फ़ॉन्ट")).getText ();System.out.println (innerText);Driver.quit ();}

सारांश

  • By.xpath () का उपयोग आमतौर पर तालिका तत्वों तक पहुंचने के लिए किया जाता है।
  • यदि तत्व HTML कोड के भीतर गहराई से लिखा गया है, जैसे कि विधेय के लिए उपयोग की जाने वाली संख्या निर्धारित करना बहुत कठिन है, हम उस तत्व की अनूठी विशेषता का उपयोग कर सकते हैं।
  • विशेषताओं का उपयोग @ प्रतीक के साथ उन्हें उपसर्ग द्वारा भविष्यवाणी के रूप में किया जाता है।
  • सेलेनियम में टेबल तक पहुँचने के लिए निरीक्षण तत्व का उपयोग करें