ऑब्जेक्ट रिपोजिटरी में Selenium

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

ऑब्जेक्ट रिपोजिटरी में Selenium यह विधि एलिमेंट लोकेटर्स को एक ही बाहरी फ़ाइल में केंद्रीकृत करती है, जिससे वे टेस्ट स्क्रिप्ट से अलग हो जाते हैं। यह तरीका रखरखाव को बेहतर बनाता है और परीक्षकों को कई टेस्ट केस संपादित करने के बजाय एक ही स्थान पर लोकेटर्स को अपडेट करने की सुविधा देता है।

  • मूल अवधारणा: उपयोगकर्ता इंटरफ़ेस लोकेटरों को कुंजी-मान युग्मों के रूप में संग्रहीत करता है, जिन्हें अलग रखा जाता है। Selenium वेबड्राइवर परीक्षण तर्क।
  • 📄 प्रॉपर्टीज़ फ़ाइल दृष्टिकोण: लोकेटरों को .properties नामक टेक्स्ट फ़ाइल में संग्रहीत करें, जिसे रनटाइम पर java.util.Properties क्लास के माध्यम से पढ़ा जा सकता है।
  • 🧩 XML फ़ाइल दृष्टिकोण: डॉक्यूमेंट ऑब्जेक्ट मॉडल और dom4j के साथ एक XML फ़ाइल का उपयोग करके selectSingleNode के माध्यम से लोकेटर पढ़ें।
  • 🔧 कार्यान्वयन प्रवाह: फाइल बनाएं, उसमें कुंजी-मान डेटा संग्रहित करें, मानों को चरों में पढ़ें, फिर उन्हें findElement फ़ंक्शन में पास करें।
  • रखरखाव लाभ: जब लोकेटर में परिवर्तन होता है, तो केवल रिपॉजिटरी फ़ाइल को अपडेट करें, न कि सभी प्रभावित टेस्ट केस को।

ऑब्जेक्ट रिपोजिटरी में Selenium

ऑब्जेक्ट रिपोजिटरी क्या है?

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

ऑब्जेक्ट रिपॉजिटरी का उपयोग करने का प्रमुख लाभ यह है कि इससे ऑब्जेक्ट और टेस्ट केस अलग-अलग हो जाते हैं। यदि किसी वेब एलिमेंट के लोकेटर का मान बदलता है, तो केवल ऑब्जेक्ट रिपॉजिटरी में बदलाव करना होता है, न कि उन सभी टेस्ट केसों में बदलाव करना जिनमें उस लोकेटर का उपयोग किया गया है। ऑब्जेक्ट रिपॉजिटरी को बनाए रखने से फ्रेमवर्क कार्यान्वयन की मॉड्यूलरिटी बढ़ती है।

ऑब्जेक्ट रिपॉजिटरी के प्रकार Selenium वेब ड्राइवर

Selenium WebDriver में डिफ़ॉल्ट रूप से कोई अंतर्निहित ऑब्जेक्ट रिपॉजिटरी नहीं होती है। हालाँकि, ऑब्जेक्ट रिपॉजिटरी को कुंजी-मान युग्म विधि का उपयोग करके बनाया जा सकता है, जिसमें कुंजी ऑब्जेक्ट को दिए गए नाम को संदर्भित करती है और मान वेब पेज के भीतर किसी ऑब्जेक्ट को विशिष्ट रूप से पहचानने के लिए उपयोग किए जाने वाले गुणों को संदर्भित करता है।

निम्नलिखित प्रकार के ऑब्जेक्ट रिपॉजिटरी बनाए जा सकते हैं Selenium वेबड्राइवर.

  1. गुण फ़ाइल का उपयोग करके ऑब्जेक्ट रिपॉजिटरी
  2. XML फ़ाइल का उपयोग करके ऑब्जेक्ट रिपॉजिटरी

Selenium वेब ड्राइवर ऑब्जेक्ट रिपोजिटरी गुण फ़ाइल का उपयोग कर रहा है

इस पद्धति में, प्रॉपर्टीज़ फ़ाइल एक टेक्स्ट फ़ाइल होती है जिसमें डेटा कुंजी-मान युग्मों के रूप में संग्रहीत होता है। नीचे दिए गए ट्यूटोरियल में निम्नलिखित विषयों पर चर्चा की जाएगी।

चरण 1) एक्लिप्स में प्रॉपर्टीज़ फ़ाइल बनाना

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

गुण फ़ाइल बनाना Eclipse

  1. मुख्य प्रोजेक्ट फ़ोल्डर पर राइट-क्लिक करें और New-> Other चुनें।

गुण फ़ाइल बनाना Eclipse

  1. अगली विंडो में, जनरल -> फ़ाइल चुनें और 'अगला' बटन पर क्लिक करें।

गुण फ़ाइल बनाना Eclipse

  1. नई फ़ाइल संसाधन विंडो पर '.properties' एक्सटेंशन के साथ एक मान्य फ़ाइल नाम प्रदान करें और 'समाप्त करें' बटन पर क्लिक करें।

गुण फ़ाइल बनाना Eclipse

  1. प्रोजेक्ट स्ट्रक्चर पर 'application.properties' नाम की एक फ़ाइल प्रदर्शित होनी चाहिए।

गुण फ़ाइल बनाना Eclipse

चरण 2) डेटा को प्रॉपर्टीज़ फ़ाइल पर संग्रहीत करना

  1. डेटा को प्रॉपर्टीज़ फ़ाइल में कुंजी-मान युग्मों के रूप में संग्रहीत किया जाता है, जिसमें कुंजी पूरी फ़ाइल में अद्वितीय होती है।
  2. हम लोकेटर मानों का उपयोग करके वेब तत्वों की पहचान करने के लिए प्रॉपर्टीज़ फ़ाइल का उपयोग करने का प्रयास करेंगे।
  3. application.properties फ़ाइल खोलें Eclipse और निम्नलिखित डेटा संग्रहीत करें
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

गुण फ़ाइल पर डेटा संग्रहीत करना

4) इस ट्यूटोरियल के लिए निम्नलिखित डेमो वेबसाइट का उपयोग किया जा रहा है:

https://demo.guru99.com/test/guru99home/यह परीक्षण परिदृश्य है:

  • XPATH का उपयोग करके मोबाइल टेस्टिंग लिंक पर क्लिक करें
  • वापस नेविगेट करें
  • आईडी का उपयोग करके ईमेल टेक्स्टबॉक्स में डेटा दर्ज करें।
  • आईडी का उपयोग करके साइन अप बटन पर क्लिक करें

चरण 3) प्रॉपर्टीज़ फ़ाइल से डेटा पढ़ना

  1. प्रॉपर्टीज़ फ़ाइल से डेटा पढ़ने के लिए java.util पैकेज में मौजूद बिल्ट-इन प्रॉपर्टीज़ क्लास का उपयोग किया जा सकता है।
  2. प्रारंभ में, नीचे दिए गए अनुसार Properties क्लास का एक ऑब्जेक्ट बनाना आवश्यक है।
  Properties obj = new Properties();
  1. हमें प्रॉपर्टीज़ फ़ाइल के पथ के साथ FileInputStream क्लास का एक ऑब्जेक्ट बनाना होगा।
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. जावा में Properties क्लास द्वारा प्रदान किए गए load मेथड का उपयोग करके प्रॉपर्टीज़ फ़ाइल से डेटा पढ़ा जा सकता है। नीचे दिया गया कोड load मेथड के उपयोग को दर्शाता है।
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

स्ट्रिंग 'मोबाइलटेस्टिंग' में वेबपेज के भीतर मोबाइल टेस्टिंग लिंक की पहचान करने के लिए XPATH शामिल होगा।

चरण 4) परीक्षण स्क्रिप्ट में गुण फ़ाइल का उपयोग करना

प्रॉपर्टीज़ फ़ाइल से डेटा पढ़कर और उस डेटा को findElement मेथड में पैरामीटर के रूप में पास करके, टेस्ट स्क्रिप्ट में प्रॉपर्टीज़ फ़ाइल का उपयोग किया जा सकता है। नीचे दिया गया कोड टेस्ट स्क्रिप्ट में प्रॉपर्टीज़ फ़ाइल से पढ़े गए डेटा के उपयोग को दर्शाता है।

driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();

नीचे उपरोक्त परीक्षण परिदृश्य के लिए प्रयुक्त पूर्ण कोड दिया गया है।

package com.objectrepository.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

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

public class DemoOR {

    public static void main(String[] args) throws IOException {

        // Create WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Load the properties File
        Properties obj = new Properties();
        FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
        obj.load(objfile);
        // Navigate to link Mobile Testing and Back
        driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
        driver.navigate().back();
        // Enter Data into Form
        driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
    }

}

Selenium XML फ़ाइल का उपयोग करके वेबड्राइवर ऑब्जेक्ट रिपॉजिटरी

XML का पूरा नाम एक्सटेंसिबल मार्कअप लैंग्वेज है। XML फ़ाइल की मूल संरचना डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM) पर आधारित होती है। XML फ़ाइल का प्रारूप वेबपेज के HTML प्रारूप की तरह ही होता है। नीचे उन विषयों की सूची दी गई है जिन्हें हम कवर करेंगे।

चरण 1) एक्लिप्स में XML फ़ाइल बनाना

  1. नीचे दिए गए जावा प्रोजेक्ट संरचना को बनाने की आवश्यकता है Eclipse.

XML फ़ाइल बनाना Eclipse

  1. प्रोजेक्ट फ़ोल्डर पर राइट-क्लिक करें, नया -> अन्य चुनें

XML फ़ाइल बनाना Eclipse

  1. XML फ़ोल्डर के अंदर XML फ़ाइल का चयन करें और 'अगला' बटन पर क्लिक करें।

XML फ़ाइल बनाना Eclipse

  1. एक मान्य XML फ़ाइल नाम दर्ज करें और 'समाप्त करें' बटन पर क्लिक करें।

XML फ़ाइल बनाना Eclipse

  1. नीचे दिखाए अनुसार एक XML फ़ाइल प्रोजेक्ट फ़ोल्डर में जोड़ी जाएगी

XML फ़ाइल बनाना Eclipse

चरण 2) डेटा को XML फ़ाइल पर संग्रहीत करना

डेटा को XML फ़ाइल में डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM) के रूप में संग्रहीत किया जा सकता है। सरलता के लिए, हम नीचे दिए गए परीक्षण परिदृश्य को उदाहरण के रूप में उपयोग कर सकते हैं।

  • XPATH का उपयोग करके मोबाइल टेस्टिंग लिंक पर क्लिक करें
  • होम पेज पर वापस जाएं
  • आईडी का उपयोग करके ईमेल टेक्स्टबॉक्स में डेटा दर्ज करें।
  • आईडी का उपयोग करके साइन अप बटन पर क्लिक करें

नीचे उपयोग की जाने वाली XML फ़ाइल का प्रारूप दिया गया है।

<menu>
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>
      <email> philadelphia-field-email</email>
      <signup> philadelphia-field-submit </signup>
 </menu>

उपरोक्त XML कोड को Properties.xml में संग्रहीत करें

XML फ़ाइल पर डेटा संग्रहीत करना

डिज़ाइन टैब में आप देखेंगे

XML फ़ाइल पर डेटा संग्रहीत करना

चरण 3) XML फ़ाइल से डेटा पढ़ना

1. XML फ़ाइल से डेटा पढ़ने के लिए जावा में अंतर्निहित 'dom4j' क्लास का उपयोग किया जा सकता है। कृपया ध्यान दें कि कोड को आगे बढ़ाने से पहले आपको नीचे दी गई JAR फ़ाइलों को अपने प्रोजेक्ट के बिल्ड पाथ में जोड़ना होगा।

  • jaxen.जार
  • डोम4j-1.6.jar

2. नीचे XML फ़ाइल से डेटा पढ़ने का कोड दिया गया है।

        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

3. सबसे पहले, हमें एक फ़ाइल ऑब्जेक्ट बनाना होगा और उसे SAXReader क्लास के 'रीड' मेथड में पैरामीटर के रूप में पास करना होगा। XML फ़ाइल का डेटा सफलतापूर्वक पढ़ लेने के बाद, हम 'selectSingleNode' मेथड का उपयोग करके XML दस्तावेज़ के अलग-अलग नोड्स तक पहुँच सकते हैं।

चरण 4) परीक्षण स्क्रिप्ट में XML फ़ाइल का उपयोग करना

XML फ़ाइल से डेटा पढ़कर और उस डेटा को findElement मेथड में पैरामीटर के रूप में पास करके, XML फ़ाइल का उपयोग टेस्ट स्क्रिप्ट में किया जा सकता है। नीचे दिया गया कोड XML फ़ाइल से पढ़े गए डेटा का टेस्ट स्क्रिप्ट में उपयोग दर्शाता है।

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

नीचे दिया गया कोड सेलेनियम वेबड्राइवर में XML फ़ाइल के उपयोग को दर्शाता है।

package com.objectrepository.demo;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class DemoORXML {

    public static void main(String[] args) throws DocumentException {
        // Creating WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Reading XML File
        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

        // Navigating to Mobile Testing and back
        driver.findElement(By.xpath(mobileTesting)).click();
        driver.navigate().back();
        // Entering Form Data
        driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(signUpButton)).click();

    }
}

वेबड्राइवर डाउनलोड करें Eclipse परियोजना

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

ऑब्जेक्ट रिपॉजिटरी केवल एलिमेंट लोकेटर को बाहरी रूप से संग्रहीत करती है। पेज ऑब्जेक्ट मॉडल एक व्यापक पैटर्न है जो लोकेटर और पेज एक्शन को पेज क्लास के भीतर समाहित करता है।

जी हां। लोकेटर को एक्सेल या सीएसवी फाइलों में भी स्टोर किया जा सकता है, अपाचे पीओआई जैसी लाइब्रेरी का उपयोग करके पढ़ा जा सकता है और फाइंडएलिमेंट को पास किया जा सकता है।

स्पष्ट और वर्णनात्मक कुंजियों का उपयोग करें, लोकेटरों को पृष्ठ के अनुसार समूहित करें, आईडी जैसे स्थिर लोकेटरों को प्राथमिकता दें और डुप्लिकेट से बचें। प्रत्येक मॉड्यूल के लिए एक ही रिपॉजिटरी रखें ताकि लोकेटर में परिवर्तन होने पर केवल एक ही प्रविष्टि अपडेट हो।

जी हां। कई एआई-सहायता प्राप्त उपकरण एक पृष्ठ को स्कैन करते हैं, तत्वों का पता लगाते हैं और तैयार लोकेटर को एक रिपॉजिटरी में निर्यात करते हैं। परीक्षकों को स्थिरता के लिए लोकेटर की समीक्षा अवश्य करनी चाहिए।

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

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