Κατηγορία ρομπότ μέσα Selenium Πρόγραμμα οδήγησης Web

Τι περιλαμβάνει το Robot Class Selenium?

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

Γιατί τάξη ρομπότ;

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

Τεκμηρίωση κατηγορίας ρομπότ

The Τεκμηρίωση κατηγορίας ρομπότ in 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, από την αριστερή γραμμή πλοήγησης κάντε κλικ στον υπερσύνδεσμο 'Robot' (Δείτε 1 που επισημαίνεται στην παρακάτω εικόνα).

Τεκμηρίωση κατηγορίας ρομπότ

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

Μέθοδοι τάξης ρομπότ στο Selenium και χρήση

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

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

Μέθοδος 1: Πατήστε το πλήκτρο ():

robot.keyPress(KeyEvent.VK_DOWN): Αυτή η μέθοδος με το πάτημα του πλήκτρου κάτω βέλους του πληκτρολογίου

Μέθοδος 2: mousePress():

robot.mousePress(InputEvent.BUTTON3_DOWN_MASK): Αυτή η μέθοδος θα πατήσει το δεξί κλικ του ποντικιού σας.

Μέθοδος 3: mouseMove():

robot.mouseMove(point.getX(), point.getY()): Αυτό θα μετακινήσει το δείκτη του ποντικιού στις καθορισμένες συντεταγμένες X και Y.

Μέθοδος 4: keyRelease():

robot.keyRelease(KeyEvent.VK_DOWN): Αυτή η μέθοδος με απελευθέρωση του πλήκτρου κάτω βέλους του πληκτρολογίου

Μέθοδος 5: mouseRelease():

robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK): Αυτή η μέθοδος θα απελευθερώσει το δεξί κλικ του ποντικιού σας

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

  • Ας πάρουμε παράδειγμα τοποθεσίας web http://spreadsheetpage.com/index.php/file/C35/P10/ όπου αφού κάνετε κλικ σε ένα στοιχείο web (.//a[@href=contains(text(),'yearly-calendar.xls']) εμφανίζεται ένα αναδυόμενο παράθυρο λήψης λειτουργικού συστήματος.
  • Για να το χειριστούμε αυτό χρησιμοποιούμε την κλάση Robot (δημιουργώντας μια παρουσία του Robot Class στον κώδικά σας ας πούμε Robot robot = new Robot()) . Η τάξη ρομπότ μας παρουσιάζει σε πακέτο AWT της JDK.
Πλήκτρο πληκτρολογίου Μέθοδος
Για να πατήσετε το πλήκτρο κάτω βέλους χρησιμοποιούμε (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	
     }	 
 }

Δείτε αυτό το βίντεο για να το δείτε σε δράση

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

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

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

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

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

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

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

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

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

TestNG εξάρτηση Maven:

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

Μετά την προσθήκη της εξάρτησης maven ή του αρχείου jar. Πρέπει να εισαγάγετε τον σχολιασμό δοκιμής του 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. Το Robot Class μπορεί να προσομοιώσει το συμβάν πληκτρολογίου και ποντικιού
  2. Το Robot Class μπορεί να βοηθήσει στη μεταφόρτωση/λήψη αρχείων όταν χρησιμοποιείτε πρόγραμμα οδήγησης web selenium
  3. Το Robot Class μπορεί εύκολα να ενσωματωθεί στο τρέχον πλαίσιο αυτοματισμού (λέξη-κλειδί, βάσει δεδομένων ή υβριδικό)

Μειονεκτήματα της κατηγορίας ρομπότ

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

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

Περίληψη

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

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