रोबोट क्लास में Selenium वेबड्राइवर

रोबोट क्लास क्या है? Selenium?

रोबोट क्लास in Selenium के कार्यान्वयन के लिए स्वचालित परीक्षण को सक्षम करने के लिए उपयोग किया जाता है Java प्लेटफ़ॉर्म। यह टेस्ट ऑटोमेशन, सेल्फ-रनिंग डेमो और अन्य अनुप्रयोगों के लिए मूल सिस्टम में इनपुट इवेंट उत्पन्न करता है जहाँ उपयोगकर्ताओं को माउस और कीबोर्ड पर नियंत्रण की आवश्यकता होती है। रोबोट क्लास को लागू करना आसान है और इसे आसानी से एक स्वचालित फ्रेमवर्क के साथ एकीकृत किया जा सकता है।

रोबोट क्लास क्यों?

रोबोट क्लास में प्रयोग किया जाता है Selenium क्योंकि, कुछ मामलों में Selenium स्वचालन परीक्षणों में, उपयोगकर्ताओं को डाउनलोड पॉप-अप, प्रिंट पॉप-अप आदि जैसे ओएस विंडोज़ और नोटपैड, कैलकुलेटर आदि जैसे मूल अनुप्रयोगों के साथ बातचीत करने के लिए कीबोर्ड या माउस पर नियंत्रण की आवश्यकता होती है। Selenium वेबड्राइवर इन पॉप-अप/अनुप्रयोगों को संभाल नहीं सकता, इसलिए Java संस्करण 1.3 में, रोबोट क्लास पेश किया गया जो ओएस पॉप-अप/अनुप्रयोगों को संभाल सकता है।

रोबोट क्लास दस्तावेज़ीकरण

RSI रोबोट क्लास दस्तावेज़ीकरण in Selenium उपयोगकर्ताओं को रोबोट क्लास में उपलब्ध सभी विधियों और कार्यों की मूल परिभाषा, वाक्यविन्यास और उपयोग को समझने में मदद करता है Java AWT पैकेज। उपयोगकर्ता दस्तावेज़ देख सकते हैं आधिकारिक Oracle वेबसाइट उपयोगकर्ता अपने स्थानीय मशीन पर स्वयं भी दस्तावेज तैयार कर सकते हैं।

स्थानीय मशीन पर दस्तावेज़ बनाने के लिए, नीचे दिए गए चरणों का पालन करें-

चरण 1) आपको src.zip फ़ाइल JDK फ़ोल्डर में मिलेगी। src.zip को कॉपी करें और इसे किसी अन्य फ़ोल्डर या निर्देशिका (जैसे D: या E:) में निकालें।

रोबोट क्लास दस्तावेज़ीकरण

चरण 2) src फ़ोल्डर निकालें और (src फ़ोल्डर तक पथ) पर नेविगेट करें/src/जावा/awt

चरण 3) awt फ़ोल्डर के वर्तमान स्थान की प्रतिलिपि बनाएँ और कमांड प्रॉम्प्ट खोलें।

चरण 4) cmd में, अपने वर्तमान निर्देशिका स्थान को awt फ़ोल्डर में बदलें और नीचे दिखाए अनुसार 'javadoc *.java' टाइप करें

रोबोट क्लास दस्तावेज़ीकरण

सिस्टम की प्रक्रिया पूरी होने तक थोड़ी देर प्रतीक्षा करें, एक बार प्रक्रिया पूरी हो जाने पर आपको awt फ़ोल्डर में कुछ HTML फ़ाइलें दिखाई देंगी।

चरण 5) index.html खोलें

रोबोट क्लास दस्तावेज़ीकरण

चरण 6) यहां आपको awt पैकेज का पूरा दस्तावेज मिलेगा, बाएं नेविगेशन बार से 'रोबोट' हाइपरलिंक पर क्लिक करें (नीचे दी गई छवि में चिह्नित 1 देखें)।

रोबोट क्लास दस्तावेज़ीकरण

यहां आप रोबोट क्लास की सभी विधियों और इंटरफेस को भी देख सकते हैं (ऊपर की छवि में चिह्नित 2 देखें)।

रोबोट क्लास विधियाँ Selenium और उपयोग

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

वेब स्वचालन के दौरान रोबोट क्लास की कुछ सामान्य और लोकप्रिय प्रयुक्त विधियाँ:

विधि 1: keyPress():

robot.keyPress(KeyEvent.VK_DOWN): यह विधि कीबोर्ड के नीचे तीर कुंजी को दबाने से काम करती है

विधि 2: माउसप्रेस():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): यह विधि आपके माउस के दाएँ क्लिक को दबाएगी।

विधि 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): यह माउस पॉइंटर को निर्दिष्ट X और Y निर्देशांक पर ले जाएगा।

विधि 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): यह विधि कीबोर्ड के नीचे तीर कुंजी को रिलीज़ करती है

विधि 5: माउस रिलीज़():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): यह विधि आपके माउस के दाएँ क्लिक को रिलीज़ कर देगी

रोबोट क्लास का उपयोग करके सामान्य उपयोग के मामलों को स्वचालित करने के लिए नमूना कोड

  • आइए वेब साइट http://spreadsheetpage.com/index.php/file/C35/P10/ का उदाहरण लेते हैं, जिसमें वेब तत्व पर क्लिक करने के बाद (.//a[@href=contains(text(),'yearly-calendar.xls']) पर एक ओएस डाउनलोड पॉप-अप प्रकट होता है।
  • इसे संभालने के लिए हम रोबोट क्लास का उपयोग करते हैं (अपने कोड में रोबोट क्लास का एक उदाहरण बनाकर) रोबोट रोबोट = नया रोबोट()) . रोबोट वर्ग JDK के AWT पैकेज में मौजूद है।
कीबोर्ड की विधि
नीचे तीर कुंजी दबाने के लिए हम (robot.keyPress(KeyEvent.VK_DOWN)) का उपयोग करते हैं
TAB कुंजी दबाने के लिए हम (robot.keyPress(KeyEvent.VK_TAB)) का उपयोग करते हैं
Enter कुंजी दबाने के लिए हम (robot.keyPress(KeyEvent.VK_ENTER)) का उपयोग करते हैं

रोबोट क्लास का उदाहरण Selenium

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	

class Excercise1 {	

      public static void main(String[] args) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot class throws AWT Exception	
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_ENTER);	
       // press enter key of keyboard to perform above selected action	
     }	 
 }

इसे क्रियान्वित होते देखने के लिए यह वीडियो देखें

रोबोट क्लास कोड का उपयोग करके निष्पादन कैसे करें? TestNG

चूंकि, अब आप रोबोट क्लास की बुनियादी विधियों से अवगत हैं, तो आइए कुछ और जटिल विधियों को समझते हैं -

मान लीजिए आप इसका उपयोग नहीं करना चाहते हैं क्लिक विधि वेब तत्व पर क्लिक करने के लिए.

ऐसे मामलों में, आप रोबोट क्लास की mouseMove विधि का उपयोग कर सकते हैं।

चरण 1) mouseMove विधि x और y निर्देशांक को पैरामीटर के रूप में लेती है जैसे रोबोट.माउसमूव(630, 420) जहाँ 630 x-अक्ष को दर्शाता है और 420 y-अक्ष को दर्शाता है। तो, यह विधि आपके माउस पॉइंटर को वर्तमान स्थान से उल्लेखित x और y प्रतिच्छेद बिंदु पर ले जाएगी।

चरण 2) इसके बाद, हमें माउस बटन दबाना होगा। हम इस विधि का उपयोग कर सकते हैं माउसप्रेस पसंद रोबोट.माउसप्रेस(इनपुटइवेंट.बटन1_डाउन_मास्क) .

चरण 3) प्रेस करने के बाद, माउस को छोड़ना होगा। हम इसका उपयोग कर सकते हैं रोबोट.माउसरिलीज़(इनपुटइवेंट.BUTTON1_DOWN_MASK) माउस के बाएं क्लिक को छोड़ने के लिए।

testNG का उपयोग करके कोड चलाना:

कोड चलाने के लिए टेस्टिंग testNG की मावेन निर्भरता या संदर्भित लाइब्रेरी की आवश्यकता है TestNG jar फ़ाइल.

TestNG मेवेन निर्भरता:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>

मावेन निर्भरता या जार फ़ाइल जोड़ने के बाद। आपको testNG का टेस्ट एनोटेशन आयात करना होगा। एक बार यह सब हो जाने के बाद, बस प्रोग्राम कोड पर राइट क्लिक करें और रन अस पर क्लिक करें और फिर क्लिक करें TestNG... और आप पाएंगे कि कोड testNG API का उपयोग करके अपना निष्पादन शुरू कर देगा।

कोड यहाँ है

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.InputEvent;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.annotations.Test;	

public class Excersise1 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // move mouse point to specific location	
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button	
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // press enter key of keyboard to perform above selected action	
    }	
}	

इसे क्रियान्वित होते देखने के लिए यह वीडियो देखें

रोबोट क्लास के लाभ

  1. रोबोट क्लास कीबोर्ड और माउस इवेंट का अनुकरण कर सकता है
  2. सेलेनियम वेब ड्राइवर का उपयोग करते समय रोबोट क्लास फ़ाइलों को अपलोड/डाउनलोड करने में मदद कर सकता है
  3. रोबोट क्लास को वर्तमान स्वचालन ढांचे (कीवर्ड, डेटा-संचालित या हाइब्रिड) के साथ आसानी से एकीकृत किया जा सकता है

रोबोट क्लास के नुकसान

रोबोट फ्रेमवर्क के कुछ नुकसान नीचे दिए गए हैं:

  1. कीवर्ड/माउस इवेंट केवल विंडो के वर्तमान इंस्टेंस पर ही काम करेगा। उदाहरण के लिए मान लीजिए कि कोई कोड कोई रोबोट क्लास इवेंट कर रहा है, और कोड निष्पादन के दौरान उपयोगकर्ता किसी अन्य स्क्रीन पर चला गया है, तो कीवर्ड/माउस इवेंट उस स्क्रीन पर होगा।
  2. अधिकांश विधियां जैसे कि माउसमूव, स्क्रीन रेजोल्यूशन पर निर्भर होती हैं, इसलिए ऐसा हो सकता है कि एक मशीन पर काम करने वाला कोड दूसरी मशीन पर काम न करे।

सारांश

AWT पैकेज में रोबोट क्लास का उपयोग OS विंडोज़ और मूल ऐप्स के साथ बातचीत करने के लिए कीबोर्ड/माउस इवेंट उत्पन्न करने के लिए किया जाता है।

रोबोट का प्राथमिक उद्देश्य सेलेनियम स्वचालित परीक्षण परियोजना निर्माण का समर्थन करना है Java मंच