वेब टेबल को कैसे संभालें Selenium

⚡ स्मार्ट सारांश

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

  • 🧱 एक्सपैथ एनाटॉमी: प्रत्येक टेबल लोकेटर //table से शुरू होता है और प्रेडिकेट्स का उपयोग करके tbody, tr और td में ड्रिल करता है।
  • 🔁 गतिशील पंक्तियाँ: findElements वेबएलिमेंट्स की एक सूची लौटाता है, जिससे लूप रनटाइम पर पंक्तियों की गणना कर सकते हैं और सेल पढ़ सकते हैं।
  • 🪄 Selenium 4: ऊपर, नीचे और पास के सापेक्ष लोकेटर ज्ञात एंकर तत्व के आसपास की कोशिकाओं को लक्षित करने में सरलता प्रदान करते हैं।
  • 🧠 एआई लोकेटर: सेल्फ-हीलिंग टूल कॉलम शिफ्ट का पता लगाते हैं और मैन्युअल XPath संपादन के बिना पंक्ति की पहचान को पुनर्स्थापित करते हैं।
  • शॉर्टकट का निरीक्षण करें: ब्राउज़र डेवलपर टूल्स एक पूर्ण XPath की प्रतिलिपि बनाते हैं जिसे आप विश्वसनीयता के लिए पहली तालिका तक छोटा कर सकते हैं।

Selenium वेब टेबल XPath उदाहरण

वेब टेबल क्या है? Selenium?

A वेब तालिका in Selenium वेब टेबल एक वेब एलिमेंट है जिसका उपयोग डेटा या जानकारी को सारणीबद्ध रूप में प्रदर्शित करने के लिए किया जाता है। प्रदर्शित डेटा स्थिर या गतिशील हो सकता है। वेब टेबल के सेल और पंक्तियों को लोकेटर के साथ वेब एलिमेंट विधियों के माध्यम से एक्सेस किया जाता है। इसका एक विशिष्ट उदाहरण ई-कॉमर्स उत्पाद पृष्ठ पर प्रदर्शित उत्पाद विनिर्देश ग्रिड है।

एचटीएमएल वेब टेबल को पढ़ना

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

वेब टेबल को कैसे संभालें Selenium

वेब तालिकाओं को संभालने के लिए नीचे दिए गए HTML कोड पर विचार करें Selenium.

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

हम इस्तेमाल करेंगे एक्सपाथ “चौथा सेल” टेक्स्ट वाले सेल का आंतरिक टेक्स्ट प्राप्त करने के लिए।

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

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

वेबड्राइवर में XPath लोकेटर हमेशा डबल फॉरवर्ड स्लैश “//” से शुरू होते हैं, जिसके बाद पैरेंट एलिमेंट आता है।.चूंकि हम वेब टेबल के साथ काम कर रहे हैं Selenium, मूल तत्व हमेशा होना चाहिए टैग. हमारा पहला भाग Selenium इसलिए XPath टेबल लोकेटर की शुरुआत “//table” से होनी चाहिए।

Selenium वेब तालिका उदाहरण

चरण 2 – चाइल्ड एलिमेंट्स जोड़ें

ठीक नीचे वाला तत्व है , इसलिए का बच्चा है इसके विपरीत, का जनक है XPath में सभी चाइल्ड एलिमेंट अपने पैरेंट एलिमेंट के दाईं ओर रखे जाते हैं, जिन्हें नीचे दिखाए गए अनुसार एक फॉरवर्ड स्लैश “/” से अलग किया जाता है।

Selenium वेब तालिका उदाहरण

चरण 3 – प्रेडिकेट जोड़ें

तत्व में दो शामिल हैं टैग। ये दो टैग इसके बच्चे हैं , इसलिए दोनों का जनक है। तत्व आपस में सहोदर हैं। भाई-बहन वे संतान तत्व होते हैं जिनका एक ही माता-पिता होता है।.

पहुँचने के लिए जिसमें "चौथा सेल" शामिल है, हमें पहले उस तक पहुंचना होगा। दूसरा पहले वाले को नहीं। केवल “//table/tbody/tr” लिखने से पहले वाले को लक्षित किया जाएगा। टैग।

तो हम दूसरे तक कैसे पहुँच सकते हैं? इसका उत्तर है उपयोग करना विधेय. प्रेडिकेट्स वर्ग कोष्ठक “[ ]” में संलग्न संख्याएँ या HTML विशेषताएँ होती हैं जो एक चाइल्ड एलिमेंट को उसके सिबलिंग्स से अलग करती हैं।चूंकि हमें जिस पंक्ति की आवश्यकता है वह दूसरी है, इसलिए हम विधेय के रूप में “[2]” का उपयोग करते हैं।

 Selenium वेब तालिका उदाहरण

यदि हम प्रेडिकेट को हटा दें, तो XPath पहला सिबलिंग लौटाता है। इसलिए, नीचे दिए गए XPath कोड में से कोई भी पहले सिबलिंग तक पहुँच जाएगा। .

Selenium Xpath का उपयोग कर वेब तालिका

चरण 4 – उपयुक्त प्रेडिकेट का उपयोग करके अगले चाइल्ड एलिमेंट्स को जोड़ें

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

वेब तालिका में Selenium Xpath का उपयोग करना

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

वेब तालिका में Selenium Xpath का उपयोग करना

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();
}

वेब तालिका में Selenium Xpath का उपयोग करना

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

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

नेस्टेड टेबल्स तक कैसे पहुँचें Selenium

पिछले अनुभाग में बताए गए पैरेंट/चाइल्ड और प्रेडिकेट के विचारों का उपयोग करके "4-5-6" टेक्स्ट वाले सेल तक पहुंचने के लिए, हम नीचे दिखाए गए XPath को बना सकते हैं।

नेस्टेड टेबल्स तक कैसे पहुँचें Selenium

नीचे दिया गया वेबड्राइवर कोड लक्षित सेल के आंतरिक पाठ को पुनः प्राप्त करता है।

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

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();
}

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

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

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

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

नीचे दिए गए उदाहरण में, "न्यूयॉर्क से शिकागो" वाला सेल काफी अंदर दबा हुआ है। Mercury पर्यटन मुखपृष्ठ.

Selenium विशेषताओं को प्रेडिकेट के रूप में उपयोग करने वाला वेब तालिका उदाहरण

Selenium विशेषताओं को प्रेडिकेट के रूप में उपयोग करने वाला वेब तालिका उदाहरण

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

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

ध्यान रखें कि जब आप XPath को अंदर डालते हैं Java“270” के चारों ओर डबल कोटेशन मार्क को बैकस्लैश से एस्केप करें ताकि By.xpath() स्ट्रिंग जल्दी समाप्त न हो।

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

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

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

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 प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

शॉर्टकट: तालिकाओं तक पहुँचने के लिए इंस्पेक्ट एलिमेंट का उपयोग करें Selenium

यदि किसी एलिमेंट का इंडेक्स या एट्रीब्यूट प्राप्त करना कठिन है, तो XPath जनरेट करने का सबसे तेज़ तरीका आधुनिक ब्राउज़र के DevTools में Inspect Element का उपयोग करना है।

नीचे दिए गए उदाहरण पर विचार करें। Mercury पर्यटन मुखपृष्ठ.

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

चरण 1

लक्ष्य सेल पर राइट-क्लिक करें और DOM पथ देखने के लिए 'इंस्पेक्ट' चुनें, फिर पूरा XPath कॉपी करें।

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

चरण 2

पहले “टेबल” पैरेंट तत्व को देखें और उसके बाईं ओर की सभी चीजें हटा दें।

Selenium प्रेडिकेट के रूप में विशेषताओं के साथ वेब तालिका उदाहरण

चरण 3

शेष XPath के आगे डबल फॉरवर्ड स्लैश “//” लगाएं और इसे अपने वेबड्राइवर कोड में कॉपी करें।

Selenium विशेषताओं के साथ वेब तालिका उदाहरण

नीचे दिया गया वेबड्राइवर कोड गहरे नेस्टेड एलिमेंट के आंतरिक टेक्स्ट को पुनर्प्राप्त करता है।

Selenium विशेषताओं के साथ वेब तालिका उदाहरण

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 सेल्फ-हीलिंग लोकेटर।

अक्सर पूछे जाने वाले प्रश्न

एक वेब टेबल में Selenium यह एक वेबएलिमेंट है जो पंक्तियों और स्तंभों में सारणीबद्ध डेटा प्रदर्शित करता है। यह स्थिर या गतिशील हो सकता है। परीक्षक वेबएलिमेंट विधियों के साथ XPath या CSS लोकेटर का उपयोग करके इसके सेल तक पहुँचते हैं क्योंकि तालिकाओं में व्यक्तिगत सेल पर अद्वितीय आईडी शायद ही कभी प्रदर्शित होती हैं।

अधिकांश टेबल सेल्स में id या name एट्रिब्यूट नहीं होते हैं, इसलिए By.id() और By.name() काम नहीं करेंगे। XPath टेबल, tbody, tr और td एलिमेंट्स के पैरेंट-चाइल्ड स्ट्रक्चर को ट्रैवर्स करता है, जो इसे सेल्स का सबसे विश्वसनीय लोकेटर बनाता है।

पंक्तियों की गणना के लिए driver.findElements(By.xpath(“//table[@id='tbl']//tr”)).size() का उपयोग करें और स्तंभों की गणना के लिए //table[@id='tbl']//tr[1]/td का उपयोग करें। findElements विधि एक सूची लौटाती है। जो त्वरित पंक्ति योग के लिए size() फ़ंक्शन का समर्थन करता है।

Selenium 4 में above(), below(), toLeftOf(), toRightOf() और near() जैसे रिलेटिव लोकेटर पेश किए गए। ये ज्ञात एंकर सेल के आसपास स्थित सेल को लक्षित करने में मदद करते हैं, जो गतिशील तालिकाओं में XPath इंडेक्स बदलने पर उपयोगी होता है।

findElements फ़ंक्शन का उपयोग करके पंक्तियों के माध्यम से लूप करें, फिर getText() फ़ंक्शन का उपयोग करके प्रत्येक सेल से टेक्स्ट पढ़ें। स्ट्रिंग संयोजन का उपयोग करके XPath को गतिशील रूप से बनाएं, जैसे कि //tr[“+i+”]/td[“+j+”]। मान पढ़ने से पहले WebDriverWait फ़ंक्शन का उपयोग करके तालिका के लोड होने की प्रतीक्षा करें।

हाँ। एआई-संचालित उपकरण जैसे TestimMabl और Functionize कंप्यूटर विज़न और DOM मॉडल का उपयोग करके टेबल की सीमाओं का पता लगाते हैं, हेडर का अनुमान लगाते हैं और कॉलम शिफ्ट होने पर लोकेटर को स्वतः ठीक करते हैं। इससे डायनामिक डैशबोर्ड के लिए XPath रखरखाव कम हो जाता है।

एआई मॉडल पिछले परीक्षणों से पंक्ति पैटर्न सीखते हैं और निश्चित इंडेक्स के बजाय टेक्स्ट समानता का उपयोग करके सेल का मिलान करते हैं। जब कोई पंक्ति स्थानांतरित होती है या किसी कॉलम का क्रम बदलता है, तब भी एआई लोकेटर XPath को दोबारा लिखे बिना लक्ष्य को ढूंढ लेता है।

findElement एक वेब एलिमेंट लौटाता है और यदि वह मौजूद नहीं है तो NoSuchElementException फेंकता है। findElements एक सूची लौटाता है। और यदि कोई मिलान नहीं मिलता है तो एक खाली सूची लौटाता है। खोज करते समय findElements का उपयोग करें।ping टेबल की पंक्तियों या स्तंभों के ऊपर।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: