Τάξη ρομπότ στο Selenium Webdriver

Πίνακας περιεχομένων:

Anonim

Κατηγορία ρομπότ

Η κλάση ρομπότ στο Σελήνιο χρησιμοποιείται για την ενεργοποίηση αυτοματοποιημένων δοκιμών για υλοποιήσεις πλατφόρμας Java. Δημιουργεί συμβάντα εισόδου σε εγγενή συστήματα για αυτοματοποιημένη δοκιμή, αυτοεκτεινόμενες επιδείξεις και άλλες εφαρμογές όπου οι χρήστες χρειάζονται έλεγχο πάνω στο ποντίκι και το πληκτρολόγιο. Η τάξη ρομπότ είναι εύκολο να εφαρμοστεί και μπορεί εύκολα να ενσωματωθεί σε ένα αυτοματοποιημένο πλαίσιο.

Γιατί κλάση ρομπότ;

Η κλάση ρομπότ χρησιμοποιείται στο Selenium επειδή, σε ορισμένες δοκιμές αυτοματισμού Selenium, οι χρήστες χρειάζονται έλεγχο στο πληκτρολόγιο ή το ποντίκι για να αλληλεπιδράσουν με παράθυρα λειτουργικού συστήματος, όπως αναδυόμενα παράθυρα λήψης, αναδυόμενα παράθυρα εκτύπωσης κ.λπ. και εγγενείς εφαρμογές όπως σημειωματάριο, αριθμομηχανή κ.λπ. Το Webdriver δεν μπορεί να χειριστεί αυτά τα αναδυόμενα παράθυρα / εφαρμογές, επομένως στην έκδοση 1.3 της Java, παρουσιάστηκε μια κλάση ρομπότ που μπορεί να χειριστεί αναδυόμενα παράθυρα / εφαρμογές OS.

Σε αυτό το σεμινάριο, θα μάθετε,

  • Οφέλη της κλάσης ρομπότ
  • Τεκμηρίωση της κλάσης ρομπότ
  • Κατανόηση των εσωτερικών μεθόδων και χρήσης της κλάσης ρομπότ
  • Πώς να εκτελέσετε κώδικα κλάσης ρομπότ χρησιμοποιώντας το testNG
  • Μειονεκτήματα της κλάσης ρομπότ

Οφέλη της κλάσης ρομπότ

  1. Το Robot Class μπορεί να προσομοιώσει το συμβάν πληκτρολογίου και ποντικιού
  2. Το Robot Class μπορεί να βοηθήσει στην αποστολή / λήψη αρχείων κατά τη χρήση προγράμματος οδήγησης ιστού σεληνίου
  3. Το Robot Class μπορεί εύκολα να ενσωματωθεί στο τρέχον πλαίσιο αυτοματισμού (λέξη-κλειδί, βάσει δεδομένων ή υβριδικό)

Τι είναι η τεκμηρίωση κλάσης ρομπότ;

Η τεκμηρίωση Robot Class στο Selenium βοηθά τους χρήστες να κατανοήσουν τον βασικό ορισμό, τη σύνταξη και τη χρήση όλων των μεθόδων και λειτουργιών που διατίθενται στην κατηγορία ρομπότ στο πακέτο Java AWT. Οι χρήστες μπορούν να δουν την τεκμηρίωση στον επίσημο ιστότοπο της Oracle. Οι χρήστες μπορούν επίσης να δημιουργήσουν την τεκμηρίωση στον τοπικό υπολογιστή τους.

Για να δημιουργήσετε την τεκμηρίωση σε τοπικό μηχάνημα, ακολουθήστε τα παρακάτω βήματα-

Βήμα 1) Θα βρείτε το αρχείο src.zip στο φάκελο JDK. Αντιγράψτε το src.zip και εξαγάγετε το ίδιο σε κάποιον άλλο φάκελο ή κατάλογο (π.χ. D: ή E:)

Βήμα 2) Εξαγωγή φακέλου src και πλοήγηση στο (διαδρομή μέχρι φάκελο src) / src / java / awt

Βήμα 3) Αντιγράψτε την τρέχουσα θέση του φακέλου awt και ανοίξτε τη γραμμή εντολών.

Βήμα 4) Στο cmd, αλλάξτε την τρέχουσα θέση καταλόγου σε φάκελο awt και πληκτρολογήστε "javadoc * .java" όπως φαίνεται παρακάτω

Περιμένετε λίγο για την επεξεργασία του συστήματος, μόλις ολοκληρωθεί, θα δείτε λίγα αρχεία HTML στον φάκελο awt.

Βήμα 5) Ανοίξτε το index.html

Βήμα 6) Εδώ έχετε πλήρη τεκμηρίωση του πακέτου awt, από την αριστερή γραμμή πλοήγησης κάντε κλικ στον υπερσύνδεσμο «Ρομπότ» (Βλέπε 1 που επισημαίνεται στην παρακάτω εικόνα).

Εδώ μπορείτε επίσης να δείτε όλες τις μεθόδους και τις διεπαφές του Robot Class (Βλέπε 2 που σημειώνονται στην παραπάνω εικόνα).

Κατανόηση των εσωτερικών μεθόδων και χρήσης της κλάσης ρομπότ

Οι μέθοδοι κλάσης ρομπότ μπορούν να χρησιμοποιηθούν για να αλληλεπιδράσουν με συμβάντα πληκτρολογίου / ποντικιού κατά την αυτοματοποίηση του προγράμματος περιήγησης. Εναλλακτικά μπορεί να χρησιμοποιηθεί το AutoIT, αλλά το μειονέκτημά του είναι ότι δημιουργεί ένα εκτελέσιμο αρχείο (exe) το οποίο θα λειτουργεί μόνο σε παράθυρα, οπότε δεν είναι καλή επιλογή για χρήση.

Μερικές κοινές και δημοφιλείς μέθοδοι Robot Class κατά τη διάρκεια αυτοματισμού ιστού:

  • keyPress (): Παράδειγμα: robot.keyPress (KeyEvent.VK_DOWN): Αυτή η μέθοδος με το πάτημα του κάτω βέλους του πληκτρολογίου
  • mousePress (): Παράδειγμα : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK): Αυτή η μέθοδος θα πατήσει το δεξί κλικ του ποντικιού σας.
  • mouseMove (): Παράδειγμα : robot.mouseMove (point.getX (), point.getY ()): Αυτό θα μετακινήσει το δείκτη του ποντικιού στις καθορισμένες συντεταγμένες X και Y.
  • keyRelease (): Παράδειγμα: robot.keyRelease (KeyEvent.VK_DOWN): Αυτή η μέθοδος με το πλήκτρο βέλους απελευθέρωσης του πληκτρολογίου
  • mouseRelease (): Παράδειγμα: robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK): Αυτή η μέθοδος θα απελευθερώσει το δεξί κλικ του ποντικιού σας

Δείγμα κώδικα για αυτοματοποίηση κοινών περιπτώσεων χρήσης χρησιμοποιώντας Robot Class

  • Ας πάρουμε για παράδειγμα τον ιστότοπο http://spreadsheetpage.com/index.php/file/C35/P10/ όπου αφού κάνετε κλικ σε ένα στοιχείο ιστού ( .//a[@href=contains(text(),'yearly- calendar.xls '] ) εμφανίζεται ένα αναδυόμενο παράθυρο λήψης λειτουργικού συστήματος.
  • Για να το χειριστούμε αυτό χρησιμοποιούμε την κλάση ρομπότ (δημιουργώντας μια παρουσία κλάσης ρομπότ στον κωδικό σας, πείτε ρομπότ ρομπότ = νέο ρομπότ () ). Η τάξη ρομπότ μας παρουσιάζεται στο πακέτο AWT του JDK.
  • Για να πατήσετε το πλήκτρο βέλους του πληκτρολογίου που χρησιμοποιούμε ( robot.keyPress (KeyEvent.VK_DOWN))
  • Για να πατήσετε το πλήκτρο TAB του πληκτρολογίου (χρησιμοποιούμε το robot.keyPress (KeyEvent.VK_TAB))
  • Για να πατήσετε το πλήκτρο Enter που χρησιμοποιούμε ( robot.keyPress (KeyEvent.VK_ENTER)).

Εδώ είναι ένα δείγμα κώδικα

εισαγωγή java.awt.AWTException;εισαγωγή java.awt.Robot;εισαγωγή java.awt.event.KeyEvent;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;τάξη Άσκηση 1 {public static void main (String [] args) ρίχνει AWTException, InterruptException {Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // δείγμα urldriver.findElement (By.xpath (".// a [@ href = περιέχει (κείμενο (), 'yearly-calendar.xls')]")). κάντε κλικ ();Ρομπότ ρομπότ = νέο ρομπότ (); // Η τάξη ρομπότ ρίχνει την εξαίρεση AWTThread.sleep (2000); // Thread.sleep ρίχνει το InterruptExceptionrobot.keyPress (KeyEvent.VK_DOWN); // πατήστε το πλήκτρο βέλους προς τα κάτω για να πλοηγηθείτε και επιλέξτε Αποθήκευση κουμπιού επιλογήςThread.sleep (2000); // το ύπνο χρησιμοποιήθηκε μόνο για την προβολή κάθε εκδήλωσης ξεχωριστά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);// πατήστε το πλήκτρο enter του πληκτρολογίου για να εκτελέσετε την παραπάνω επιλεγμένη ενέργεια}} 

Ελέγξτε αυτό το βίντεο για να το δείτε σε δράση

Πώς να εκτελέσετε κώδικα κλάσης ρομπότ χρησιμοποιώντας το TestNG

Επειδή, τώρα γνωρίζετε τις βασικές μεθόδους της κλάσης ρομπότ, οπότε ας καταλάβουμε μερικές πιο περίπλοκες μεθόδους -

Ας υποθέσουμε ότι δεν θέλετε να χρησιμοποιήσετε τη μέθοδο κλικ για να κάνετε κλικ στο στοιχείο ιστού.

Σε τέτοιες περιπτώσεις, μπορείτε να χρησιμοποιήσετε τη μέθοδο MouseMove της κλάσης Robot.

Βήμα 1) Η μέθοδος mouseMove παίρνει συντεταγμένες x και y ως παραμέτρους όπως το robot.mouseMove (630, 420) όπου το 630 δείχνει τον άξονα x και το 420 δείχνει τον άξονα y. Έτσι, αυτή η μέθοδος θα μετακινήσει το δείκτη του ποντικιού σας από την τρέχουσα θέση στο αναφερόμενο σημείο διασταύρωσης x και y.

Βήμα 2) Στη συνέχεια, πρέπει να πατήσουμε το κουμπί του ποντικιού. Μπορούμε να χρησιμοποιήσουμε τη μέθοδο mousePress όπως robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) .

Βήμα 3) Μετά το πάτημα, το ποντίκι πρέπει να απελευθερωθεί. Μπορούμε να χρησιμοποιήσουμε το robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK ) για να απελευθερώσουμε το αριστερό κλικ ενός ποντικιού.

Τρέχοντας κώδικας χρησιμοποιώντας testNG:

Ο κώδικας εκτέλεσης που χρησιμοποιεί το Testng απαιτεί εξάρτηση από το testNG ή βιβλιοθήκη αναφοράς του αρχείου βάζου TestNG.

Εξάρτηση του TestNG maven:

<εξάρτηση> org.testng  testng  6.1.1  

Αφού προσθέσετε την εξάρτηση maven ή το αρχείο jar. Πρέπει να εισαγάγετε τον σχολιασμό δοκιμής του testNG. Μόλις τελειώσει, απλώς κάντε δεξί κλικ στον κώδικα προγράμματος και κάντε κλικ στο Run As και στη συνέχεια κάντε κλικ στο TestNG

… Και θα διαπιστώσετε ότι ο κώδικας θα ξεκινήσει την εκτέλεση του χρησιμοποιώντας το testNG API.

Εδώ είναι ο κωδικός

εισαγωγή java.awt.AWTException;εισαγωγή java.awt.Robot;εισαγωγή java.awt.event.InputEvent;εισαγωγή java.awt.event.KeyEvent;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.firefox.FirefoxDriver;εισαγωγή org.testng.annotations.Test;δημόσια τάξη Excersise1 {@Δοκιμήδημόσια εκτέλεση στατικού κενού () ρίχνει InterruptException, AWTException {Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.manage (). window (). μεγιστοποίηση ();driver.get ("http://spreadsheetpage.com/index.php/file/C35/P10/"); // δείγμα urlΡομπότ ρομπότ = νέο ρομπότ ();robot.mouseMove (630, 420); // μετακινήστε το σημείο του ποντικιού σε συγκεκριμένη τοποθεσίαrobot.delay (1500); // καθυστέρηση είναι να κάνετε τον κώδικα να περιμένει τα αναφερόμενα χιλιοστά του δευτερολέπτου πριν εκτελέσετε το επόμενο βήμαrobot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // πατήστε αριστερό κλικrobot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // απελευθέρωση αριστερού κλικrobot.delay (1500);robot.keyPress (KeyEvent.VK_DOWN); // πατήστε το πλήκτρο βέλους πληκτρολογίου για να επιλέξετε το κουμπί επιλογής ΑποθήκευσηThread.sleep (2000);robot.keyPress (KeyEvent.VK_ENTER);// πατήστε το πλήκτρο enter του πληκτρολογίου για να εκτελέσετε την παραπάνω επιλεγμένη ενέργεια}}

Ελέγξτε αυτό το βίντεο για να το δείτε σε δράση

Μειονεκτήματα της κλάσης ρομπότ

Το πλαίσιο ρομπότ έχει μερικά μειονεκτήματα που αναφέρονται παρακάτω:

  1. Το συμβάν λέξεων-κλειδιών / ποντικιού θα λειτουργεί μόνο στην τρέχουσα παρουσία του παραθύρου. Π.χ. ας υποθέσουμε ότι ένας κώδικας εκτελεί οποιοδήποτε συμβάν κλάσης ρομπότ και κατά τη διάρκεια της εκτέλεσης κώδικα ο χρήστης έχει μετακινηθεί σε κάποια άλλη οθόνη, τότε θα συμβεί λέξη-κλειδί / ποντίκι σε αυτήν την οθόνη.
  2. Οι περισσότερες από τις μεθόδους όπως το mouseMove εξαρτώνται από την ανάλυση της οθόνης, οπότε ενδέχεται να υπάρχει πιθανότητα ο κώδικας που λειτουργεί σε ένα μηχάνημα να μην λειτουργεί σε άλλο.

Περίληψη

Η κλάση ρομπότ στο πακέτο AWT χρησιμοποιείται για τη δημιουργία συμβάντων πληκτρολογίου / ποντικιού για αλληλεπίδραση με παράθυρα λειτουργικού συστήματος και εγγενείς εφαρμογές.

Ο πρωταρχικός σκοπός του Robot είναι να υποστηρίξει την κατασκευή αυτοματοποιημένων δοκιμών σεληνίου στην πλατφόρμα Java

Αυτό το άρθρο συνεισφέρει ο Ramandeep Singh, ο οποίος είναι μηχανικός δοκιμών αυτοματισμού σε κορυφαίο MNC.