robot class selenium webdriver with java
Αυτό το σεμινάριο εξηγεί τις χρήσεις, τα παραδείγματα και τις λειτουργίες της κλάσης ρομπότ στην Java και την ενσωμάτωσή της με το Selenium Framework:
Το ρομπότ Java είναι ένα Ρομπότ τάξη στο Ιάβα Πακέτο AWT. Χρησιμοποιείται γενικά για την προσομοίωση λειτουργιών πληκτρολογίου και ποντικιού σε πραγματικό χρόνο που κάνουμε χειροκίνητα.
Ο κύριος σκοπός της κλάσης ρομπότ στην Java είναι ο αυτοματισμός. Η ομορφιά του είναι ότι μπορεί εύκολα να ενσωματωθεί στο τρέχον πλαίσιο αυτοματισμού για να αυξήσει την εμβέλειά του.
Τι θα μάθετε:
- Κατηγορία ρομπότ στην Ιάβα
- συμπέρασμα
Κατηγορία ρομπότ στην Ιάβα
Σε αυτό το σεμινάριο, θα μάθουμε για την ενσωμάτωση Selenium με Robot Class στην Java, αλλά γενικά, η Java Robot Class μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πλαίσιο αυτοματισμού που έχει κατασκευαστεί στην Java.
Προσομοίωση λειτουργιών κλάσης ρομπότ
Υπάρχουν πολλές λειτουργίες της κλάσης ρομπότ στην Ιάβα, που αναφέρονται παρακάτω είναι μερικές γνωστές μέθοδοι που σχετίζονται με αυτές:
# 1) Λειτουργίες πληκτρολογίου
Οι λειτουργίες πληκτρολογίου της κλάσης Robot ασχολούνται γενικά με την προσομοίωση διαφορετικών πλήκτρων που διατίθενται στα πληκτρολόγια και τις λειτουργίες τους.
Δημόσιο άκυρο πλήκτρο Press (int keycode)
Αυτή η λειτουργία πιέζει το πλήκτρο παραμέτρου εισόδου. Για να ολοκληρωθεί η λειτουργία πρέπει να χρησιμοποιηθεί η μέθοδος απελευθέρωσης κλειδιού.
Ακολουθήστε το παρακάτω απόσπασμα κώδικα:
r.keyPress(KeyEvent.VK_CONTROL); r.keyPress(KeyEvent.VK_V);
Εδώ, στο παραπάνω απόσπασμα κώδικα, απλώς πατάμε CTRL + V. Η μέθοδος KeyEvent σχετίζεται με άλλα κλειδιά που είναι διαθέσιμα στο πληκτρολόγιό μας. Κάποιος μπορεί να δοκιμάσει όλα αυτά.
Δημόσιο άκυρο κλειδί Απελευθέρωση (int keycode)
Αυτή η μέθοδος απελευθερώνει το κλειδί παραμέτρου εισαγωγής. Αυτό είναι μετά τη λειτουργία της μεθόδου συμπίεσης πλήκτρων.
Ακολουθήστε το παρακάτω απόσπασμα κώδικα:
r.keyRelease(KeyEvent.VK_V); r.keyRelease(KeyEvent.VK_CONTROL);
Εδώ στο παραπάνω απόσπασμα κώδικα, κυκλοφορούμε απλώς το CTRL + V. Ομοίως, όπως αναφέρθηκε παραπάνω, η μέθοδος KeyEvent σχετίζεται επίσης με άλλα κλειδιά που είναι διαθέσιμα στο πληκτρολόγιό μας. Κάποιος μπορεί να δοκιμάσει όλα αυτά.
# 2) Λειτουργίες ποντικιού
Οι λειτουργίες του ποντικιού ασχολούνται με την προσομοίωση διαφορετικών λειτουργιών του ποντικιού.
Δημόσιο κενό ποντίκι Μετακίνηση (int x, int y)
Εδώ, οι δύο παράμετροι καθορίζουν τις συντεταγμένες της οθόνης. Μόλις δώσουμε τις συντεταγμένες το ποντίκι μετακινείται στο σημείο των δεδομένων συντεταγμένων της οθόνης.
Ακολουθήστε το δεδομένο απόσπασμα κώδικα:
robot.mouseMove (0, 900);
Εδώ, η θέση της παραμέτρου x είναι 0 και η παράμετρος y είναι 900. Έτσι το ποντίκι θα μετακινηθεί σε αυτό το σημείο. Κάποιος μπορεί να κάνει μια μέθοδο σφάλματος και δοκιμής για να μετακινηθεί στις διάφορες θέσεις της οθόνης.
Δημόσιο κενό ποντίκι (κουμπιά int)
Κάποιος μπορεί να φανταστεί αυτήν τη λειτουργικότητα με λειτουργίες keyPress για να αποκτήσει μια σαφή αντίληψη. Αυτή η μέθοδος προσομοιώνει τις λειτουργίες του ποντικιού.
Ακολουθήστε το παρακάτω απόσπασμα κώδικα:
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
Δημόσιο άκυρο ποντίκι Απελευθέρωση (κουμπιά int)
Κάποιος μπορεί να φανταστεί αυτήν τη λειτουργικότητα με λειτουργίες keyPress για να αποκτήσει μια σαφή αντίληψη. Αυτή η μέθοδος προσομοιώνει τις λειτουργίες του ποντικιού.
Ακολουθήστε το παρακάτω απόσπασμα κώδικα:
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
Σημείωση :Υπάρχουν πολλές άλλες διαθέσιμες μέθοδοι για εξερεύνηση. Αλλά οι παραπάνω μέθοδοι είναι οι πιο συχνά χρησιμοποιούμενες. Ωστόσο, για να εξερευνήσετε άλλες μεθόδους, μπορεί κανείς να αναζητήσει την κλάση Robot Java στα έγγραφα της Oracle.
Χρήση κλάσης ρομπότ στην Ιάβα
Πότε και πού μπορούμε να χρησιμοποιήσουμε την κλάση ρομπότ στην Java για να βελτιώσουμε αποτελεσματικά τη λειτουργικότητα σε ένα πλαίσιο αυτοματισμού;
Όπως όλοι γνωρίζουμε ότι το Σελήνιο μπορεί να χρησιμοποιηθεί για την αυτοματοποίηση εφαρμογών ιστού. Αυτές οι διαδικτυακές εφαρμογές στο Σελήνιο χρησιμοποιούν το υποκείμενο αντικείμενο ιστού (εντοπιστές) της εφαρμογής ιστού για να καθορίσουν τη θέση στην ιστοσελίδα και να λειτουργούν ανάλογα. Τώρα σε ορισμένες περιπτώσεις, βλέπουμε ότι πρέπει να χειριστούμε το αναδυόμενο παράθυρο ελέγχου ταυτότητας παραθύρων ή άλλα αναδυόμενα παράθυρα κατά την αυτοματοποίηση στο λειτουργικό σύστημα των Windows.
Το Selenium δεν μπορεί να αυτοματοποιήσει τις ενέργειες των Windows, αλλά μπορούμε να χρησιμοποιήσουμε το Robot Class στην Java για να ολοκληρώσουμε την εργασία.
Παραδείγματα κλάσης ρομπότ Java
Παράδειγμα 1: Χρήση κλάσης ρομπότ για αυτοματοποίηση ορισμένων λειτουργιών των Windows
Μερικές φορές οποιοδήποτε μικρό μέρος / ενότητα ολόκληρης της εφαρμογής ιστού μπορεί να σχεδιαστεί με φλας. Μπορούμε να χρησιμοποιήσουμε την κλάση Robot για να χειριστούμε αυτό το μέρος. Δεδομένου ότι τα αντικείμενα ιστού παραμένουν κρυμμένα για το μέρος που έχει σχεδιαστεί σε φλας.
αριστερή εσωτερική ένωση έναντι αριστερή εξωτερική ένωση
Ένα άλλο σημαντικό χαρακτηριστικό που μπορεί να αυτοματοποιηθεί χρησιμοποιώντας το Robot Class στην Java είναι το Rich Text Editors, το οποίο μερικές φορές παραμένει ενσωματωμένο σε εφαρμογές web. Υπάρχουν πολλές λειτουργικές λειτουργίες σε συντάκτες RTF, οι οποίες είναι πολύ εύκολο να αυτοματοποιηθούν χρησιμοποιώντας αυτήν την κατηγορία.
Παράδειγμα 2: Χρήση κλάσης ρομπότ για αυτοματοποίηση πεδίων RTF
Σημείωση :Υπάρχουν άλλα εργαλεία ανοιχτού κώδικα διαθέσιμα στην αγορά όπως Αυτόματο IT (ειδικά σχεδιασμένο για την αυτοματοποίηση των Windows GUI), Sikuli (εργαλείο επεξεργασίας εικόνας) κ.λπ. για την εκτέλεση παρόμοιων εργασιών.
Αυτό ισχύει, αλλά η κλάση ρομπότ στην Java συνοδεύεται από JDK. Επομένως, δεν απαιτούμε κανένα άλλο εργαλείο για εγκατάσταση, αυτό είναι ένα απλό πλεονέκτημα εάν κάποιος χρησιμοποιεί ένα αυτοματοποιημένο πλαίσιο Java.
Αυτοματοποίηση πεδίων RTF
Δείγμα εικόνας:
Παράδειγμα αποσπάσματος:
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 έχουν αυτοματοποιηθεί χρησιμοποιώντας το έντονο και πλάγιο εικονίδιο.
Αυτοματοποίηση ορισμένων λειτουργιών των Windows
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(); } } }
Αυτό το απόσπασμα κώδικα ασχολείται γενικά από το εικονίδιο έναρξης έως την προβολή της διαμόρφωσης του συστήματος. Χρησιμοποιώντας μια παρόμοια ιδέα, μπορεί κανείς να χειριστεί τα παράθυρα που δημιουργούν αναδυόμενα παράθυρα κατά την εκκίνηση ή μεταξύ λειτουργίας σε μια ιστοσελίδα.
Συμβουλές για την ενσωμάτωση του ρομπότ Java στο υπάρχον πλαίσιο Java + Selenium
Τώρα, θα δούμε πώς να τροποποιήσουμε το παραπάνω κομμάτι κωδικών, έτσι ώστε να μπορούμε να ενσωματώσουμε το ίδιο σε ένα υπάρχον πλαίσιο Selenium + Java.
Παρακαλώ σημειώστε ότι αυτή είναι μια ιδέα και υπάρχουν πολλοί άλλοι τρόποι για να το επιτύχετε. Μπορούμε περαιτέρω να επεκτείνουμε / τροποποιήσουμε αυτήν την ιδέα για να καλύψουμε τις επιχειρηματικές ανάγκες που μπορεί να διαφέρουν από έργο σε έργο.
Αρχικά, δημιουργήστε μια τάξη που θα περιέχει όλες τις κοινές ή τις διαθέσιμες μεθόδους κλάσης ρομπότ, έτσι ώστε όποτε απαιτείται, να χρησιμοποιούμε αυτές τις μεθόδους σε οποιαδήποτε άλλη τάξη όπου γράφουμε δοκιμαστικές περιπτώσεις.
Τα παρακάτω αποσπάσματα κώδικα δείχνουν αυτό:
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 μέσα στην κλάση seleniumFramework και έχουμε πρόσβαση στις μεθόδους που ορίζονται στην κλάση CommonRobotMethods μέσω. Εναλλαγή λέξεων-κλειδιών που ορίζονται στην κλάση CommonRobotMethods.
Εδώ, έχουμε δημιουργήσει μια διεπαφή για να καταγράψουμε όλες τις εισόδους που μπορούν να εξωτερικευτούν. Αλλά κάποιος μπορεί να διαιρέσει και να γράψει σε excel / properties ή interface ανάλογα με το επίπεδο άνεσής του ή τις επιχειρηματικές του ανάγκες.
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'; }
συμπέρασμα
Ας ελπίσουμε ότι ο τρόπος χρήσης της κλάσης ρομπότ σε ένα πλαίσιο Selenium + Java είναι ξεκάθαρος τώρα. Ευχόμαστε σε όλους να βρουν αυτό το άρθρο ενδιαφέρον και χρήσιμο στην εκμάθηση της έννοιας.
Συνιστώμενη ανάγνωση
- Cucumber Selenium Tutorial: Αγγούρι Java Selenium WebDriver Integration
- Βασικά Java: Java Syntax, Java Class και Core Java Concepts
- Εξερευνήστε τα βασικά στοιχεία της Java στο σελήνιο με παραδείγματα
- Ενσωμάτωση σεληνίου με JMeter
- Εκπαιδευτικό μάθημα Java Scanner με παραδείγματα
- Εκπαιδευτικό μάθημα Java Array - java.util.Arays Class με παραδείγματα
- Τι είναι το Java Java | Java Vector Class Tutorial με παραδείγματα
- Java Interface και Abstract Class Tutorial με παραδείγματα