robot class selenium webdriver with java
यह ट्यूटोरियल जावा में रोबोट क्लास के उपयोग, उदाहरण और कार्यशीलता और सेलेनियम फ्रेमवर्क के साथ इसके एकीकरण की व्याख्या करता है:
रोबोट जावा एक है रोबोट कक्षा में जावा AWT पैकेज। यह आमतौर पर वास्तविक समय कीबोर्ड और माउस संचालन का अनुकरण करने के लिए उपयोग किया जाता है जो हम मैन्युअल रूप से करते हैं।
जावा में रोबोट क्लास का मुख्य उद्देश्य स्वचालन है। इसकी ख़ासियत यह है कि इसकी पहुंच बढ़ाने के लिए इसे वर्तमान स्वचालन ढांचे के साथ आसानी से एकीकृत किया जा सकता है।
आप क्या सीखेंगे:
जावा में रोबोट क्लास
इस ट्यूटोरियल में, हम जावा में रोबोट क्लास के साथ सेलेनियम एकीकरण के बारे में जानेंगे, लेकिन सामान्य तौर पर, जावा रोबोट क्लास का उपयोग जावा पर निर्मित किसी भी स्वचालन ढांचे में किया जा सकता है।
रोबोट क्लास की कार्यात्मकता का अनुकरण
जावा में रोबोट क्लास के कई कार्य हैं, नीचे सूचीबद्ध हैं उनके साथ जुड़े कुछ प्रसिद्ध तरीके हैं:
# 1) कीबोर्ड फ़ंक्शनलिटीज़
रोबोट वर्ग के कीबोर्ड की कार्यक्षमता आम तौर पर कीबोर्ड में उपलब्ध विभिन्न कुंजी के सिमुलेशन और उनके संचालन से संबंधित है।
सार्वजनिक शून्य कीपैड (इंट कीकोड)
यह फ़ंक्शन इनपुट पैरामीटर कुंजी दबाता है। ऑपरेशन को पूरा करने के लिए कुंजी रिलीज विधि का उपयोग किया जाना चाहिए।
नीचे दिए गए कोड स्निपेट का पालन करें:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
यहां, उपरोक्त कोड स्निपेट में, हम केवल CTRL + V दबा रहे हैं। KeyEvent विधि हमारे कीबोर्ड के लिए उपलब्ध अन्य कुंजी के साथ जुड़ा हुआ है। इन सभी को आजमा सकते हैं।
सार्वजनिक शून्य KeyRelease (int keycode)
यह विधि इनपुट पैरामीटर कुंजी जारी करती है। यह की-मेप विधि का ऑपरेशन है।
नीचे दिए गए कोड स्निपेट का पालन करें:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
यहाँ उपरोक्त कोड स्निपेट में, हम अभी CTRL + V जारी कर रहे हैं। इसी प्रकार, जैसा कि ऊपर कहा गया है, की -वेंट भी हमारे कीबोर्ड के लिए उपलब्ध अन्य कुंजी के साथ जुड़ा हुआ है। इन सभी को आजमा सकते हैं।
# 2) माउस फ़ंक्शंस
माउस फंक्शंस में माउस के विभिन्न ऑपरेशनों का अनुकरण किया जाता है।
सार्वजनिक शून्य माउसमोव (इंट x, int y)
यहां, दो पैरामीटर स्क्रीन के निर्देशांक निर्धारित करते हैं। एक बार जब हम निर्देशांक को स्क्रीन के दिए गए निर्देशांक के बिंदु पर माउस ले जाते हैं।
दिए गए कोड स्निपेट का पालन करें:
robot.mouseMove (0, 900);
यहां, x पैरामीटर की स्थिति 0 है, और y पैरामीटर 900 है। इसलिए माउस उस बिंदु पर चला जाएगा। एक स्क्रीन के विभिन्न पदों पर जाने के लिए एक त्रुटि और परीक्षण विधि कर सकता है।
सार्वजनिक शून्य माउसप्रेस (इंट बटन)
एक स्पष्ट अवधारणा प्राप्त करने के लिए कीप कार्यक्षमता के साथ इस कार्यक्षमता की कल्पना कर सकते हैं। यह विधि माउसप्रेस फ़ंक्शंस का अनुकरण करती है।
नीचे दिए गए कोड स्निपेट का पालन करें:
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
सार्वजनिक शून्य माउसरेज़ (इंट बटन)
एक स्पष्ट अवधारणा प्राप्त करने के लिए कीप कार्यक्षमता के साथ इस कार्यक्षमता की कल्पना कर सकते हैं। यह विधि माउसप्रेस फ़ंक्शंस का अनुकरण करती है।
नीचे दिए गए कोड स्निपेट का पालन करें:
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //associated with mouse left click robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); //associated with mouse middle click robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); //associated with mouse right click
ध्यान दें :अन्वेषण के लिए कई अन्य विधियाँ उपलब्ध हैं। लेकिन उपरोक्त विधियां सबसे अधिक बार उपयोग की जाती हैं। हालांकि अन्य तरीकों का पता लगाने के लिए एक ओरेकल डॉक्स में रोबोट जावा वर्ग की खोज कर सकता है।
जावा में रोबोट क्लास का उपयोग
स्वचालन ढांचे में कार्यक्षमता को प्रभावी ढंग से बढ़ाने के लिए हम जावा में रोबोट क्लास का उपयोग कब और कहां कर सकते हैं?
जैसा कि हम सभी जानते हैं कि सेलेनियम का उपयोग वेब एप्लिकेशन को स्वचालित करने के लिए किया जा सकता है। सेलेनियम के ये वेब एप्लिकेशन वेब पेज पर स्थिति निर्धारित करने और तदनुसार संचालित करने के लिए वेब ऐप के अंतर्निहित वेब ऑब्जेक्ट (लोकेटर) का उपयोग करते हैं। अब कुछ मामलों में, हम देखते हैं कि हमें विंडोज़ ऑपरेटिंग सिस्टम पर स्वचालित करते समय विंडोज़ प्रमाणीकरण पॉप-अप या किसी अन्य विंडोज़ पॉप-अप को संभालने की आवश्यकता है।
सेलेनियम विंडोज कार्यों को स्वचालित नहीं कर सकता है लेकिन हम कार्य को पूरा करने के लिए जावा में रोबोट क्लास का उपयोग कर सकते हैं।
जावा रोबोट क्लास के उदाहरण
उदाहरण 1: कुछ विंडोज़ फ़ंक्शंस को स्वचालित करने के लिए रोबोट क्लास का उपयोग करना
कभी-कभी पूरे वेब एप्लिकेशन के किसी भी छोटे हिस्से / मॉड्यूल को फ्लैश में डिज़ाइन किया जा सकता है। हम उस हिस्से को संभालने के लिए रोबोट क्लास का उपयोग कर सकते हैं। चूंकि फ्लैश में डिज़ाइन किए गए हिस्से के लिए वेब ऑब्जेक्ट छिपे रहते हैं।
एंड्रॉइड पर बिन फ़ाइल कैसे खोलें
एक अन्य महत्वपूर्ण विशेषता जिसे जावा में रोबोट क्लास का उपयोग करके स्वचालित किया जा सकता है वह रिच टेक्स्ट एडिटर्स है, जो कभी-कभी वेब अनुप्रयोगों में एम्बेडेड रहता है। आरटीएफ संपादकों में कई परिचालन कार्य हैं जो इस वर्ग का उपयोग करके स्वचालित करना काफी आसान है।
उदाहरण 2: RTF फ़ील्ड को स्वचालित करने के लिए रोबोट क्लास का उपयोग करना
ध्यान दें :बाजार में अन्य ओपन-सोर्स उपकरण उपलब्ध हैं जैसे ऑटो आईटी (विशेष रूप से विंडोज़ जीयूआई को स्वचालित करने के लिए डिज़ाइन किया गया), सिकुली (इमेज प्रोसेसिंग टूल), आदि इसी तरह के कार्यों को पूरा करने के लिए।
यह सच है लेकिन जावा में रोबोट क्लास JDK के साथ आता है। इस प्रकार, हमें स्थापित करने के लिए किसी अन्य उपकरण की आवश्यकता नहीं है, यह एक सीधा फायदा है अगर कोई जावा-आधारित स्वचालन ढांचे का उपयोग कर रहा है।
स्वचालित आरटीएफ फ़ील्ड
नमूना चित्र:
उदाहरण स्निपेट:
import java.awt.AWTException; import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class javainteraction { public void seleniumwithjava() throws AWTException, InterruptedException { System.setProperty('webdriver.chrome.driver', 'D://chromedriver//chromedriver.exe'); WebDriver driver =new ChromeDriver(); driver.get('https://www.tinymce.com' ); driver.manage().window().maximize(); driver.findElement(By.xpath('(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)')).click(); Robot r = new Robot(); String text = 'Welcome to the world of automation.'; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); Thread.sleep(1000); String text1 = 'Hope you enjoy This'; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL); driver.findElement(By.xpath('(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)')).click(); } public static void main(String args()) throws AWTException, InterruptedException { javainteraction j1 = new javainteraction(); j1.seleniumwithjava(); } }
यहां, RTF संपादकों की दो कार्यशीलता को बोल्ड और इटैलिक आइकन का उपयोग करके स्वचालित किया गया है।
कुछ विंडोज फ़ंक्शनलिटीज़ को स्वचालित करना
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; public class RobotJ { public static void main(String() args) { // TODO Auto-generated method stub Robot robot; try { robot = new Robot(); robot.mouseMove(0, 900); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(300, 490); robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); robot.delay(1000); robot.mouseMove(400, 690); robot.delay(1000); robot.mousePress(InputEvent.BUTTON1_MASK); robot.mouseRelease(InputEvent.BUTTON1_MASK); robot.delay(1000); robot.mouseMove(1300, 150); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
यह कोड स्निपेट आमतौर पर स्टार्ट आइकन से शुरू होकर सिस्टम कॉन्फ़िगरेशन को देखने का अधिकार प्रदान करता है। एक समान अवधारणा का उपयोग करते हुए एक वेब पेज पर ऑपरेशन के दौरान या बीच में विंडोज़ पॉप-अप जनरेटिंग को भी हैंडल किया जा सकता है।
मौजूदा जावा + सेलेनियम फ्रेमवर्क में रोबोट जावा को शामिल करने के लिए टिप्स
अब, हम यह देखने जा रहे हैं कि उपरोक्त प्रदर्शन किए गए कोड को कैसे संशोधित किया जाए ताकि हम उसी को मौजूदा सेलेनियम / जावा फ्रेमवर्क में समायोजित कर सकें।
कृपया ध्यान दें कि यह एक अवधारणा है और इसे पूरा करने के कई अन्य तरीके हैं। व्यावसायिक आवश्यकताओं को पूरा करने के लिए हम इस अवधारणा को आगे बढ़ा सकते हैं / संशोधित कर सकते हैं जो परियोजना से परियोजना में भिन्न हो सकते हैं।
सबसे पहले, एक ऐसा वर्ग बनाएं जो सभी सामान्य या रोबोट वर्ग के उपलब्ध तरीकों को पकड़ लेगा ताकि जब भी आवश्यकता हो हम उन विधियों को किसी अन्य कक्षाओं में उपयोग कर सकें जहां हम परीक्षण के मामले लिख रहे हैं।
नीचे दिए गए कोड स्निपेट इसे प्रदर्शित करते हैं:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; public class CommonRobotMethods { Robot robot; int a= 0,b= 900; //This value can be exported from property file or excel sheet instead of direct input to the code public void LeftClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } public void MiddleClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void RightClickMouse() throws AWTException { robot = new Robot(); robot.mousePress(InputEvent.BUTTON2_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK); } public void MouseMove(int x, int y) throws AWTException { robot = new Robot(); robot.mouseMove(x,y); } public void KeyPressCTRL() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); } public void KeyReleaseCTRL() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_CONTROL); } public void KeyPressV() throws AWTException { robot = new Robot(); robot.keyPress(KeyEvent.VK_V); } public void KeyReleaseV() throws AWTException { robot = new Robot(); robot.keyRelease(KeyEvent.VK_V); } public String RobotJavaMethods(String utilityMethod) { switch(utilityMethod) { case 'LeftClickMouse': try { LeftClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MiddleClickMouse': try { MiddleClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'RightClickMouse': try { RightClickMouse(); } catch(AWTException e) { //Write any thing to track the error } break; case 'MouseMove': try { MouseMove(a,b); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressCTRL': try { KeyPressCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseCTRL': try { KeyReleaseCTRL(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyPressV': try { KeyPressV(); } catch(AWTException e) { //Write any thing to track the error } break; case 'KeyReleaseV': try { KeyReleaseV(); } catch(AWTException e) { //Write any thing to track the error } break; default: System.out.println('UnHandled error'); } return utilityMethod; } }
यहाँ हमने कुछ विधियाँ ली हैं, कोई अपनी परियोजना की जरूरतों के अनुसार अन्य तरीकों को भी जोड़ सकता है।
प्रत्येक विधि एक स्विच केस से जुड़ी होती है, ताकि आवश्यकता पड़ने पर केस कीवर्ड का उपयोग किया जा सके।
अब देखते हैं कि हम उस कोड को कैसे बदल सकते हैं जिसे हमने RTF संपादक को स्वचालित करने के लिए लिखा है:
समझने के लिए नीचे दिए गए कोड स्निपेट को देखें:
import java.awt.Robot; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class seleniumFramework { public void actualOperationalMethod() throws InterruptedException { CommonRobotMethods cm = new CommonRobotMethods(); System.setProperty('webdriver.chrome.driver', UtilityPathandLoc.Chromedriver_path); WebDriver driver =new ChromeDriver(); driver.get(UtilityPathandLoc.APPURL); driver.manage().window().maximize(); driver.findElement(By.xpath(UtilityPathandLoc.Bold_loc)).click(); String text = UtilityPathandLoc.First_input; StringSelection stringSelection = new StringSelection(text); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, stringSelection); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); Thread.sleep(1000); String text1 = UtilityPathandLoc.Second_input; StringSelection stringSelection1 = new StringSelection(text1); Clipboard clipboard1 = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard1.setContents(stringSelection1, stringSelection1); cm.RobotJavaMethods('KeyPressCTRL'); cm.RobotJavaMethods('KeyPressV'); cm.RobotJavaMethods('KeyReleaseV'); cm.RobotJavaMethods('KeyReleaseCTRL'); driver.findElement(By.xpath(UtilityPathandLoc.Italics_loc)).click(); } public static void main(String args()) { seleniumFramework s1 = new seleniumFramework(); try { s1.actualOperationalMethod(); } catch (InterruptedException e) { e.printStackTrace(); } } }
हम सेलेनियमफ्रेमवर्क वर्ग के अंदर कॉमनरोबोटमेथोड्स क्लास की वस्तु बना रहे हैं और कॉमनरोबोटमेथोड्स क्लास में परिभाषित तरीकों का उपयोग कर रहे हैं। CommonRobotMethods वर्ग में परिभाषित कीवर्ड स्विच करें।
यहां, हमने सभी इनपुटों को लिखने के लिए एक इंटरफ़ेस बनाया है, जिसे बाहरी रूप दिया जा सकता है। लेकिन व्यक्ति अपने आराम स्तर या व्यावसायिक आवश्यकताओं के अनुसार एक्सेल / गुणों या इंटरफ़ेस में विभाजित और लिख सकता है।
public interface UtilityPathandLoc { String APPURL= 'https://www.tinymce.com'; String Chromedriver_path = 'D://chromedriver//chromedriver.exe'; String Bold_loc = '(//div(contains(@aria-label,'Bold'))//i(contains(@class,'mce-i-bold')))(1)'; String Italics_loc = '(//div(contains(@aria-label,'Italic'))//i(contains(@class,'mce-i-italic')))(1)'; String First_input = 'Welcome to the world of automation.'; String Second_input = 'Hope you enjoy This'; }
निष्कर्ष
उम्मीद है कि, सेलेनियम + जावा ढांचे के भीतर रोबोट क्लास का उपयोग कैसे किया जाए। हम चाहते हैं कि हर कोई इस लेख को अवधारणा को सीखने में दिलचस्प और सहायक लगे।
अनुशंसित पाठ
- ककड़ी सेलेनियम ट्यूटोरियल: ककड़ी जावा सेलेनियम वेबड्राइवर एकीकरण
- जावा बेसिक्स: जावा सिंटैक्स, जावा क्लास और कोर जावा कॉन्सेप्ट
- उदाहरणों के साथ सेलेनियम में जावा की अनिवार्यता का अन्वेषण करें
- जेमीटर के साथ सेलेनियम का एकीकरण
- उदाहरण के साथ जावा स्कैनर क्लास ट्यूटोरियल
- जावा ऐरे क्लास ट्यूटोरियल - java.util.Arays क्लास उदाहरण के साथ
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल