XPath द्वारा FindElement खोजें Selenium

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

XPath द्वारा FindElement खोजें Selenium यह कमांड पेज पर मौजूद किसी एक वेब एलिमेंट की विशिष्ट रूप से पहचान करता है, जबकि FindElements कमांड मेल खाने वाले सभी एलिमेंट्स की पूरी सूची लौटाता है। दोनों कमांड ID, Name, Class Name और XPath रणनीतियों को कवर करने वाले By लोकेटर ऑब्जेक्ट को स्वीकार करते हैं।

  • मूल सिद्धांत: FindElement पहला मेल खाने वाला WebElement लौटाता है; FindElements शून्य से अनुक्रमित एक सूची लौटाता है, जैसे कि एक ऐरे।
  • ⚠️ एक्सेप्शन हेंडलिंग: जब कोई मैच नहीं मिलता है तो FindElement NoSuchElementException फेंकता है, जबकि FindElements विफल होने के बजाय एक खाली सूची लौटाता है।
  • 🧭 लोकेटर रणनीतियाँ: आईडी, नाम, क्लास नाम, टैग नाम, लिंक टेक्स्ट, आंशिक लिंक टेक्स्ट और एक्सपाथ में से चुनें।
  • 🧩 कार्यान्वयन फोकस: वेबड्राइवर स्क्रिप्ट में लक्ष्य तत्वों को विश्वसनीय रूप से एक अद्वितीय लोकेटर मान के साथ एक बाय ऑब्जेक्ट पास करें।
  • 🚀 व्यावहारिक आवेदन: काम कर रहे Java उदाहरणों में एक डेमो पेज पर रेडियो बटन पर क्लिक करना और तत्वों की सूची को दोहराना दिखाया गया है।

XPath द्वारा FindElement खोजें Selenium

In Selenium वेबड्राइवर, FindElement और तत्व खोजें ये वे मुख्य कमांड हैं जिनका उपयोग किसी पृष्ठ पर वेब तत्वों का पता लगाने के लिए किया जाता है, इससे पहले कि उन पर क्लिक या टेक्स्ट एंट्री जैसी कोई कार्रवाई की जा सके।

आपको तत्व(तत्वों) को खोजने के आदेश की आवश्यकता क्यों है?

किसी वेब पेज के साथ इंटरैक्ट करने के लिए उपयोगकर्ता को पहले वेब एलिमेंट का पता लगाना होता है। फाइंड एलिमेंट कमांड का उपयोग वेब पेज के भीतर किसी एक वेब एलिमेंट को विशिष्ट रूप से पहचानने के लिए किया जाता है, जबकि फाइंड एलिमेंट्स कमांड का उपयोग वेब एलिमेंट्स की सूची को पहचानने के लिए किया जाता है। एक एलिमेंट को कई कमांड का उपयोग करके पहचाना जा सकता है। लोकेटर रणनीतियाँ जैसे कि आईडी, नाम, क्लास का नाम, लिंक टेक्स्ट, आंशिक लिंक टेक्स्ट, टैग का नाम और एक्सपाथ.

FindElement कमांड सिंटैक्स

नीचे FindElement कमांड का सिंटैक्स दिया गया है। Selenium वेबड्राइवर:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

FindElement कमांड By ऑब्जेक्ट को पैरामीटर के रूप में लेता है और WebElement प्रकार का एक ऑब्जेक्ट लौटाता है। By ऑब्जेक्ट का उपयोग ID, Name, Class Name, XPath आदि जैसी विभिन्न लोकेटर रणनीतियों के साथ किया जा सकता है।

लोकेटर रणनीति निम्नलिखित में से कोई भी मान हो सकती है:

  • ID
  • नाम
  • कक्षा का नाम
  • टैग नाम
  • लिंक पाठ
  • आंशिक लिंक पाठ
  • एक्सपाथ

लोकेटर वैल्यू वह विशिष्ट मान है जिसका उपयोग करके किसी वेब एलिमेंट की पहचान की जा सकती है। यह डेवलपर्स और टेस्टर्स की ज़िम्मेदारी है कि वे यह सुनिश्चित करें कि वेब एलिमेंट्स को आईडी या नाम जैसी विशिष्ट विशेषताओं का उपयोग करके आसानी से पहचाना जा सके।

उदाहरण:

WebElement loginLink = driver.findElement(By.linkText("Login"));

उदाहरण: तत्व ढूंढें Selenium

निम्नलिखित डेमो एप्लिकेशन का उपयोग फाइंड एलिमेंट कमांड को क्रियान्वित रूप में दिखाने के लिए किया जाता है:

https://demo.guru99.com/test/ajax.html

परिदृश्य:

चरण १: AUT खोलें

चरण १: रेडियो बटन ढूंढें और उस पर क्लिक करें, फिर चेक बटन पर क्लिक करें।

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();

//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

FindElements कमांड सिंटैक्स

जब आपको किसी लोकेटर से मेल खाने वाले पहले तत्व के बजाय उससे मेल खाने वाले सभी तत्वों की आवश्यकता हो, तो FindElements का उपयोग करें। इसका सिंटैक्स नीचे दिया गया है:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

FindElements कमांड By ऑब्जेक्ट को पैरामीटर के रूप में लेता है और वेब तत्वों की एक सूची लौटाता है। यदि दी गई लोकेटर रणनीति और लोकेटर मान का उपयोग करके कोई तत्व नहीं मिलते हैं, तो यह एक खाली सूची लौटाता है।

उदाहरण:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

उदाहरण: तत्वों को खोजें Selenium

इसी डेमो एप्लिकेशन का उपयोग यह दिखाने के लिए किया जाता है कि FindElements किस प्रकार मेल खाने वाले तत्वों की सूची पर पुनरावृति करता है।

परिदृश्य:

चरण १: ओपन URL परीक्षणधीन आवेदन के लिए

चरण १: रेडियो बटनों का टेक्स्ट ढूंढें और उसे आउटपुट कंसोल पर प्रिंट करें।

package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

एलिमेंट ढूंढें बनाम एलिमेंट्स ढूंढें

नीचे Find Element और Find Elements कमांड के बीच प्रमुख अंतर दिए गए हैं:

एलिमेंट ढूंढें बनाम एलिमेंट्स ढूंढें Selenium

तत्व खोजें तत्व खोजें
यदि एक ही लोकेटर वाले कई वेब एलिमेंट मिलते हैं, तो यह पहला वेब एलिमेंट लौटाता है। वेब तत्वों की सूची लौटाता है
यदि लोकेटर रणनीति से मेल खाने वाले कोई तत्व नहीं हैं तो NoSuchElementException अपवाद उत्पन्न करता है। यदि लोकेटर रणनीति से मेल खाने वाले कोई वेब तत्व नहीं हैं, तो एक खाली सूची लौटाता है
XPath का उपयोग करके एलिमेंट खोजने से केवल एक ही वेब एलिमेंट मिलेगा। यह लोकेटर रणनीति से मेल खाने वाले तत्वों का संग्रह ढूंढेगा।
लागू नहीं प्रत्येक वेब एलिमेंट को 0 से शुरू होने वाली संख्या से इंडेक्स किया जाता है, बिल्कुल एक ऐरे की तरह।

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

उपयोग Selenium अप्रत्यक्ष या प्रत्यक्ष प्रतीक्षा इसलिए ड्राइवर एलिमेंट के प्रकट होने तक पेज की जाँच करता रहता है। वेबड्राइवरवेट के साथ स्पष्ट प्रतीक्षा और अपेक्षित शर्तें गतिशील, AJAX-आधारित पेजों के लिए सबसे विश्वसनीय तरीका हैं।

ID सबसे तेज़ और सबसे विश्वसनीय लोकेटर है क्योंकि ब्राउज़र इसे सीधे इंडेक्स करते हैं। CSS सेलेक्टर आमतौर पर XPath से तेज़ होते हैं, इसलिए XPath का उपयोग केवल उन मामलों में करें जहाँ कोई अद्वितीय ID, नाम या क्लास उपलब्ध न हो।

जी हां। एआई-संचालित परीक्षण सहायक DOM का विश्लेषण कर सकते हैं और स्वचालित रूप से स्थिर XPath या CSS लोकेटर सुझा सकते हैं, जिससे मैन्युअल निरीक्षण का समय कम हो जाता है। Revउत्पादन परीक्षण सूट में जोड़ने से पहले विशिष्टता के लिए उत्पन्न लोकेटरों की समीक्षा की गई।

सेल्फ-हीलिंग फ्रेमवर्क आर्टिफिशियल इंटेलिजेंस (AI) का उपयोग करके यह पता लगाते हैं कि यूआई में बदलाव के बाद लोकेटर कब खराब हो जाता है और स्वचालित रूप से सबसे करीबी मेल खाने वाले एलिमेंट को बदल देते हैं। इससे बार-बार बदलते एलिमेंट एट्रिब्यूट्स के कारण होने वाले टेस्ट रखरखाव में कमी आती है।

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