वेब टेबल को कैसे संभालें Selenium
⚡ स्मार्ट सारांश
Selenium वेब टेबल हैंडलिंग QA इंजीनियरों को XPath, CSS और अन्य तकनीकों का उपयोग करके HTML पंक्तियों और स्तंभों से सारणीबद्ध डेटा पढ़ने की सुविधा देता है। Selenium 4 सापेक्ष लोकेटर। यह लेख स्थैतिक तालिकाओं, नेस्टेड तालिकाओं, विशेषता विधेय और गतिशील ग्रिड के लिए एआई तकनीकों के बारे में विस्तार से बताता है।

वेब टेबल क्या है? Selenium?
A वेब तालिका in Selenium वेब टेबल एक वेब एलिमेंट है जिसका उपयोग डेटा या जानकारी को सारणीबद्ध रूप में प्रदर्शित करने के लिए किया जाता है। प्रदर्शित डेटा स्थिर या गतिशील हो सकता है। वेब टेबल के सेल और पंक्तियों को लोकेटर के साथ वेब एलिमेंट विधियों के माध्यम से एक्सेस किया जाता है। इसका एक विशिष्ट उदाहरण ई-कॉमर्स उत्पाद पृष्ठ पर प्रदर्शित उत्पाद विनिर्देश ग्रिड है।
एचटीएमएल वेब टेबल को पढ़ना
कई बार परीक्षकों को HTML तालिकाओं के भीतर स्थित तत्वों (आमतौर पर पाठ मान) तक पहुँचने की आवश्यकता होती है। हालाँकि, वेब डिज़ाइनर शायद ही कभी व्यक्तिगत सेल पर id या name विशेषता प्रदान करते हैं। इसलिए, By.id(), By.name(), या By.cssSelector() जैसी विधियाँ शायद ही कभी काम करती हैं। इस स्थिति में, सबसे विश्वसनीय विकल्प By.xpath() है क्योंकि यह तालिका टैग के भीतर पैरेंट-चाइल्ड संबंधों का पता लगाता है।
वेब टेबल को कैसे संभालें Selenium
वेब तालिकाओं को संभालने के लिए नीचे दिए गए HTML कोड पर विचार करें Selenium.
हम इस्तेमाल करेंगे एक्सपाथ “चौथा सेल” टेक्स्ट वाले सेल का आंतरिक टेक्स्ट प्राप्त करने के लिए।
चरण 1 – मूल तत्व (तालिका) सेट करें
वेबड्राइवर में XPath लोकेटर हमेशा डबल फॉरवर्ड स्लैश “//” से शुरू होते हैं, जिसके बाद पैरेंट एलिमेंट आता है।.चूंकि हम वेब टेबल के साथ काम कर रहे हैं Selenium, मूल तत्व हमेशा होना चाहिए टैग. हमारा पहला भाग Selenium इसलिए XPath टेबल लोकेटर की शुरुआत “//table” से होनी चाहिए।
चरण 2 – चाइल्ड एलिमेंट्स जोड़ें
ठीक नीचे वाला तत्व है , इसलिए का बच्चा है इसके विपरीत, का जनक है XPath में सभी चाइल्ड एलिमेंट अपने पैरेंट एलिमेंट के दाईं ओर रखे जाते हैं, जिन्हें नीचे दिखाए गए अनुसार एक फॉरवर्ड स्लैश “/” से अलग किया जाता है।
.png)
चरण 3 – प्रेडिकेट जोड़ें
तत्व में दो शामिल हैं टैग। ये दो टैग इसके बच्चे हैं , इसलिए दोनों का जनक है। तत्व आपस में सहोदर हैं। भाई-बहन वे संतान तत्व होते हैं जिनका एक ही माता-पिता होता है।.
पहुँचने के लिए जिसमें "चौथा सेल" शामिल है, हमें पहले उस तक पहुंचना होगा। दूसरा पहले वाले को नहीं। केवल “//table/tbody/tr” लिखने से पहले वाले को लक्षित किया जाएगा। टैग।
तो हम दूसरे तक कैसे पहुँच सकते हैं? इसका उत्तर है उपयोग करना विधेय. प्रेडिकेट्स वर्ग कोष्ठक “[ ]” में संलग्न संख्याएँ या HTML विशेषताएँ होती हैं जो एक चाइल्ड एलिमेंट को उसके सिबलिंग्स से अलग करती हैं।चूंकि हमें जिस पंक्ति की आवश्यकता है वह दूसरी है, इसलिए हम विधेय के रूप में “[2]” का उपयोग करते हैं।
यदि हम प्रेडिकेट को हटा दें, तो XPath पहला सिबलिंग लौटाता है। इसलिए, नीचे दिए गए XPath कोड में से कोई भी पहले सिबलिंग तक पहुँच जाएगा। .
चरण 4 – उपयुक्त प्रेडिकेट का उपयोग करके अगले चाइल्ड एलिमेंट्स को जोड़ें
अगला तत्व जिसकी हमें आवश्यकता है वह दूसरा है। चरण 2 और 3 के नियमों को लागू करने पर, हमें नीचे दिखाया गया XPath प्राप्त होता है।
अब जबकि हमारे पास सही XPath लोकेटर है, हम नीचे दिए गए कोड का उपयोग करके सेल तक पहुँच सकते हैं और उसके अंदर का टेक्स्ट पढ़ सकते हैं। यह मानकर चल रहे हैं कि आपने HTML पेज को अपनी C ड्राइव में “newhtml.html” के रूप में सहेजा है।
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/write-xpath-table.html";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(
By.xpath("//table/tbody/tr[2]/td[2]")).getText();
System.out.println(innerText);
driver.quit();
}
नेस्टेड टेबल तक पहुँचना
नेस्टेड टेबल्स पर भी यही सिद्धांत लागू होते हैं। नेस्टेड टेबल वे टेबल होती हैं जो किसी अन्य टेबल के अंदर रखी जाती हैं।। एक उदाहरण नीचे दिया गया है।
पिछले अनुभाग में बताए गए पैरेंट/चाइल्ड और प्रेडिकेट के विचारों का उपयोग करके "4-5-6" टेक्स्ट वाले सेल तक पहुंचने के लिए, हम नीचे दिखाए गए XPath को बना सकते हैं।
नीचे दिया गया वेबड्राइवर कोड लक्षित सेल के आंतरिक पाठ को पुनः प्राप्त करता है।
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/accessing-nested-table.html";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(
By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText();
System.out.println(innerText);
driver.quit();
}
नीचे दिया गया आउटपुट पुष्टि करता है कि आंतरिक तालिका तक सफलतापूर्वक पहुंच बनाई गई है।
विशेषताओं का विधेय के रूप में उपयोग करना
यदि एलिमेंट HTML के अंदर गहराई में स्थित है, जहां उसके समकक्षों की गिनती करना मुश्किल हो जाता है, तो हम उस एलिमेंट के यूनिक एट्रीब्यूट का उपयोग कर सकते हैं।
नीचे दिए गए उदाहरण में, "न्यूयॉर्क से शिकागो" वाला सेल काफी अंदर दबा हुआ है। Mercury पर्यटन मुखपृष्ठ.
हम तालिका के अद्वितीय विशेषता (चौड़ाई="270") का उपयोग विधेय के रूप में कर सकते हैं। विशेषताओं को @ प्रतीक के साथ उपसर्ग करके विधेय के रूप में उपयोग किया जाता हैऊपर दिए गए उदाहरण में, "न्यूयॉर्क से शिकागो" वाला सेल पहले स्थान पर स्थित है। चौथे का इसलिए हमारा XPath नीचे दिखाए गए चित्र जैसा दिखना चाहिए।
ध्यान रखें कि जब आप XPath को अंदर डालते हैं Java“270” के चारों ओर डबल कोटेशन मार्क को बैकस्लैश से एस्केप करें ताकि By.xpath() स्ट्रिंग जल्दी समाप्त न हो।
अब हम नीचे दिए गए कोड का उपयोग करके उस सेल तक पहुंचने के लिए तैयार हैं।
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(By
.xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
.getText();
System.out.println(innerText);
driver.quit();
}
शॉर्टकट: तालिकाओं तक पहुँचने के लिए इंस्पेक्ट एलिमेंट का उपयोग करें Selenium
यदि किसी एलिमेंट का इंडेक्स या एट्रीब्यूट प्राप्त करना कठिन है, तो XPath जनरेट करने का सबसे तेज़ तरीका आधुनिक ब्राउज़र के DevTools में Inspect Element का उपयोग करना है।
नीचे दिए गए उदाहरण पर विचार करें। Mercury पर्यटन मुखपृष्ठ.
चरण 1
लक्ष्य सेल पर राइट-क्लिक करें और DOM पथ देखने के लिए 'इंस्पेक्ट' चुनें, फिर पूरा XPath कॉपी करें।
चरण 2
पहले “टेबल” पैरेंट तत्व को देखें और उसके बाईं ओर की सभी चीजें हटा दें।
चरण 3
शेष XPath के आगे डबल फॉरवर्ड स्लैश “//” लगाएं और इसे अपने वेबड्राइवर कोड में कॉपी करें।
नीचे दिया गया वेबड्राइवर कोड गहरे नेस्टेड एलिमेंट के आंतरिक टेक्स्ट को पुनर्प्राप्त करता है।
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(By
.xpath("//table/tbody/tr/td[2]"
+ "//table/tbody/tr[4]/td/"
+ "table/tbody/tr/td[2]/"
+ "table/tbody/tr[2]/td[1]/"
+ "table[2]/tbody/tr[3]/td[2]/font"))
.getText();
System.out.println(innerText);
driver.quit();
}
डायनामिक वेब टेबल में पंक्तियों और स्तंभों की गणना कैसे करें
डायनामिक वेब टेबल, जैसे कि डैशबोर्ड या खोज परिणाम, हर बार लोड होने पर अलग-अलग संख्या में पंक्तियाँ प्रदर्शित करते हैं। इन्हें संभालने के लिए, निम्नलिखित का उपयोग करें: findElements हर एक को लाने के लिए एक सूची में डेटा डालें, फिर प्रत्येक सेल को पढ़ने के लिए लूप करें। नीचे दिया गया कोड स्निपेट पंक्तियों की गणना करता है और एक तालिका में उन सभी सेल को पढ़ता है जिनकी आईडी "customers" है।
List<WebElement> rows = driver.findElements(
By.xpath("//table[@id='customers']//tr"));
System.out.println("Total rows: " + rows.size());
for (int i = 1; i <= rows.size(); i++) {
List<WebElement> cells = driver.findElements(
By.xpath("//table[@id='customers']//tr[" + i + "]/td"));
for (WebElement cell : cells) {
System.out.println(cell.getText());
}
}
लोकेटर को लपेटें WebDriverWait साथ में visibilityOfAllElementsLocatedBy जब टेबल को AJAX द्वारा लोड किया जाता है। इससे धीमी गति से रेंडर होने वाली ग्रिडों पर पुराने एलिमेंट संदर्भों को रोका जा सकता है।
Selenium वेब टेबल के लिए 4 सापेक्ष लोकेटर
Selenium 4 ने दृश्य स्थिति के आधार पर तत्वों को लक्षित करने वाले सापेक्ष लोकेटरों को प्रस्तुत किया। ये तब उपयोगी होते हैं जब पंक्तियों के पुनर्व्यवस्थापन के कारण XPath अनुक्रमणिकाएँ टूट जाती हैं। विधियाँ above(), below(), toLeftOf(), toRightOf(), तथा near() ये सभी एंकर वेबएलिमेंट को स्वीकार करते हैं।
import static org.openqa.selenium.support.locators.RelativeLocator.with;
WebElement emailHeader = driver.findElement(By.xpath("//th[text()='Email']"));
WebElement emailCell = driver.findElement(
with(By.tagName("td")).below(emailHeader));
System.out.println(emailCell.getText());
कॉलम का क्रम बदलने पर भी रिलेटिव लोकेटर पठनीय बने रहते हैं। डेटा-आधारित पेजों पर सर्वोत्तम परिणाम प्राप्त करने के लिए इन्हें स्पष्ट प्रतीक्षा के साथ प्रयोग करें।
गतिशील वेब टेबल को संभालने के लिए एआई उपकरण
एआई-सहायता प्राप्त परीक्षण प्लेटफॉर्म उन ग्रिडों पर लोकेटर रखरखाव को कम करते हैं जो अक्सर बदलते रहते हैं। जैसे उपकरण Testim, मबली, तथा कार्य करना कॉलम शिफ्ट और सेल्फ-हीलिंग लोकेटर का पता लगाने के लिए कंप्यूटर विज़न और DOM मॉडल का उपयोग किया जाता है। ये निश्चित XPath इंडेक्स के बजाय हेडर टेक्स्ट और सेल समानता के आधार पर पंक्तियों की पहचान करते हैं।
शुद्ध के लिए Selenium परियोजनाएं, पुस्तकालय जैसे हीलेनियम वेबड्राइवर को रैप करें और रनटाइम पर टूटे हुए लोकेटरों को फिर से लिखें। इन टूल्स को वेबड्राइवरवेट के साथ मिलाकर, हर UI परिवर्तन के बाद सेलेक्टरों को फिर से लिखे बिना डायनामिक टेबल स्क्रिप्ट को स्थिर रखें।
सारांश
- By.xpath() वेब टेबल के सेल्स तक पहुंचने का सबसे विश्वसनीय तरीका है। Selenium.
- यदि भाई-बहनों की गिनती करना कठिन है, तो @ चिह्न से पहले एक अद्वितीय विशेषता को विधेय के रूप में उपयोग करें।
- findElements एक सूची लौटाता है जो डायनामिक टेबल में पंक्ति गणना का समर्थन करता है।
- Selenium 4 सापेक्ष लोकेटर (ऊपर, नीचे, पास) स्थितिजन्य XPath पर निर्भरता को कम करते हैं।
- DevTools में Inspect Element, गहराई में दबी हुई कोशिकाओं के लिए XPath जनरेशन को तेज करता है।
- एआई उपकरण जैसे Testimग्रिड बदलने के लिए Mabl और Healenium सेल्फ-हीलिंग लोकेटर।

.png)
.png)



















