Sikuli Tutorial για Selenium Αυτοματοποίηση
Σε τι βρίσκεται ο Sikuli Selenium?
Σικούλι είναι ένα εργαλείο δοκιμής αυτοματισμού ανοιχτού κώδικα βασισμένο σε GUI. Χρησιμοποιείται κυρίως για την αλληλεπίδραση με στοιχεία ιστοσελίδων και το χειρισμό αναδυόμενων παραθύρων. Το Sikuli χρησιμοποιεί την τεχνική της «Αναγνώρισης εικόνας» και του «Control GUI» για να αλληλεπιδράσει με στοιχεία ιστοσελίδων και αναδυόμενα παράθυρα. Στο Sikuli, όλα τα στοιχεία Ιστού λαμβάνονται ως εικόνες και αποθηκεύονται μέσα στο έργο.
Πώς να χρησιμοποιήσετε το Sikuli με Selenium Πρόγραμμα οδήγησης Web
Το Sikuli μπορεί να ενσωματωθεί με το πρόγραμμα οδήγησης web selenium χρησιμοποιώντας το αρχείο Sikuli JAR.
Η παρακάτω ακολουθία είναι η λίστα βημάτων για τη διαμόρφωση του Sikuli με το πρόγραμμα οδήγησης web selenium.
Βήμα 1) Λήψη το αρχείο Sikuli JAR από την παρακάτω διεύθυνση URL και εξαγάγετε τα περιεχόμενα του αρχείου ZIP σε έναν φάκελο.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Βήμα 2) Δημιουργήστε ένα νέο έργο JAVA στο Eclipse και προσθέστε το αρχείο JAR στη διαδρομή δόμησης, μαζί με αρχεία jar σεληνίου χρησιμοποιώντας δεξί κλικ στο έργο -> Build Path -> Configure Build Path
Αφού προσθέσετε το αρχείο JAR στη διαδρομή κατασκευής του έργου, οι κλάσεις που παρέχονται από το Sikuli μπορούν να χρησιμοποιηθούν.
Μάθημα οθόνης στο Sikuli
Η κλάση οθόνης είναι οι βασικές κλάσεις για όλες τις μεθόδους που παρέχονται από το Sikuli. Η κλάση οθόνης περιέχει προκαθορισμένες μεθόδους για όλες τις λειτουργίες που εκτελούνται συνήθως σε στοιχεία οθόνης, όπως κλικ, διπλό κλικ, παροχή εισαγωγής σε πλαίσιο κειμένου, τοποθέτηση του δείκτη του ποντικιού, κ.λπ. Παρακάτω είναι η λίστα των μεθόδων που χρησιμοποιούνται συνήθως από την κλάση Screen.
Μέθοδος | Descriptιόν | Σύνταξη |
---|---|---|
Πατήστε | Αυτή η μέθοδος χρησιμοποιείται για να κάνετε κλικ σε ένα στοιχείο στην οθόνη χρησιμοποιώντας το όνομα της εικόνας ως παράμετρο. | Screen s = new Screen();
s.click("QA.png"); |
διπλό κλικ | Αυτή η μέθοδος χρησιμοποιείται για διπλό κλικ σε ένα στοιχείο. Δέχεται το όνομα της εικόνας ως παράμετρο. | Screen s = new Screen();
s.doubleClick(“QA.png”); |
Χαρακτηριστικά | Αυτή η μέθοδος χρησιμοποιείται για την παροχή τιμής εισόδου σε ένα στοιχείο. Αποδέχεται το όνομα της εικόνας και το κείμενο που θα σταλεί ως παραμέτρους. |
s.type("QA.png","TEXT"); |
Φτερουγίζω | Αυτή η μέθοδος χρησιμοποιείται για την τοποθέτηση του ποντικιού πάνω από ένα στοιχείο. Δέχεται το όνομα της εικόνας ως παράμετρο. |
s.hover("QA.png"); |
Εύρεση | Αυτή η μέθοδος χρησιμοποιείται για την εύρεση ενός συγκεκριμένου στοιχείου στην οθόνη. Δέχεται το όνομα της εικόνας ως παράμετρο. |
s.find("QA.png"); |
Μάθημα μοτίβων στο Sikuli
Η κλάση μοτίβου χρησιμοποιείται για τη συσχέτιση του αρχείου εικόνας με πρόσθετα χαρακτηριστικά για τον μοναδικό προσδιορισμό του στοιχείου. Παίρνει τη διαδρομή της εικόνας ως παράμετρο.
Pattern p = new Pattern ("Path of image");
Οι παρακάτω είναι οι πιο συχνά χρησιμοποιούμενες μέθοδοι της κλάσης Pattern.
Μέθοδος | Descriptιόν | Σύνταξη |
---|---|---|
getFileName | Επιστρέφει το όνομα αρχείου που περιέχεται στο αντικείμενο Pattern. |
Pattern p = new Pattern(“D:\Demo\QA.png”); Όνομα αρχείου συμβολοσειράς = p.getFileName(); |
παρόμοιες | Αυτή η μέθοδος επιστρέφει ένα νέο αντικείμενο Pattern με ομοιότητα που έχει οριστεί σε μια καθορισμένη τιμή. Δέχεται την τιμή ομοιότητας μεταξύ 0 και 1 ως παράμετρο. Το Sikuli αναζητά όλα τα στοιχεία που εμπίπτουν στο καθορισμένο εύρος ομοιότητας και επιστρέφει ένα νέο αντικείμενο μοτίβου. |
Μοτίβο p1 = p.similar(0.7f); |
Ακριβής | Αυτή η μέθοδος επιστρέφει ένα νέο αντικείμενο μοτίβου με ομοιότητα σε 1. Αναζητά μόνο μια ακριβή αντιστοίχιση του καθορισμένου στοιχείου. |
Μοτίβο p1 = p.exact(); |
Παράδειγμα κώδικα για μεταφόρτωση αρχείου χρησιμοποιώντας το Sikuli
Ο παρακάτω κώδικας εξηγεί τη χρήση του Sikuli για τη μεταφόρτωση αρχείων Firefox.
package com.sikuli.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.sikuli.script.FindFailed; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; import org.openqa.selenium.chrome.ChromeDriver; public class SikuliDemo { public static void main(String[] args) throws FindFailed { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); String filepath = "D:\\Guru99Demo\\Files\\"; String inputFilePath = "D:\\Guru99Demo\\Files\\"; Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); WebDriver driver; // Open Chrome browser driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php"); // Click on Browse button and handle windows pop up using Sikuli driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); s.wait(fileInputTextBox, 20); s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); // Close the browser driver.close(); } }
Επεξήγηση κώδικα:
Βήμα 1) Η πρώτη δήλωση περιλαμβάνει τον ορισμό της εκτελέσιμης διαδρομής προγράμματος οδήγησης για το chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Βήμα 2) Χρησιμοποιήστε ένα εργαλείο screengrab όπως π.χ Snipping Tool για να τραβήξετε στιγμιότυπα οθόνης του αναδυόμενου παραθύρου 'FileTextBox" και κουμπί "Άνοιγμα".
Έτσι πρέπει να μοιάζει το στιγμιότυπο οθόνης σας:-
Οι εικόνες για το πλαίσιο κειμένου εισαγωγής αρχείου των Windows και το κουμπί ανοίγματος αποθηκεύονται στο "FileTextBox.PNG» και «OpenButton.PNG».
Ο Sikuli χρησιμοποιεί την τεχνική της Αναγνώρισης Εικόνας για να αναγνωρίσει στοιχεία στην οθόνη. Βρίσκει στοιχεία στην οθόνη αποκλειστικά με βάση τις εικόνες τους.
Παράδειγμα: Εάν θέλετε να αυτοματοποιήσετε τη λειτουργία ανοίγματος του σημειωματάριου, τότε πρέπει να αποθηκεύσετε την εικόνα ενός εικονιδίου επιφάνειας εργασίας για το σημειωματάριο σε ένα αρχείο PNG και να εκτελέσετε τη λειτουργία κλικ σε αυτό.
Στην περίπτωσή μας, αναγνωρίζει το πλαίσιο κειμένου εισαγωγής αρχείου και ανοίγει το κουμπί Windows αναδυόμενο παράθυρο χρησιμοποιώντας τις αποθηκευμένες εικόνες. Εάν η ανάλυση της οθόνης αλλάξει από τη λήψη εικόνας στη δοκιμαστική εκτέλεση σεναρίου, η συμπεριφορά του Sikuli θα ήταν ασυνεπής. Ως εκ τούτου, είναι πάντα σκόπιμο να εκτελείτε το δοκιμαστικό σενάριο στην ίδια ανάλυση στην οποία καταγράφονται οι εικόνες. Η αλλαγή στο μέγεθος των εικονοστοιχείων των εικόνων θα έχει ως αποτέλεσμα ο Sikuli να δημιουργήσει μια εξαίρεση FindFailed.
Βήμα 3) Οι επόμενες δηλώσεις περιλαμβάνουν τη δημιουργία αντικειμένων για κλάσεις Screen και Pattern. Δημιουργήστε ένα νέο αντικείμενο οθόνης. Ορίστε τη διαδρομή του αρχείου που θέλετε να ανεβάσετε ως παράμετρο στο αντικείμενο Pattern.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Βήμα 4) Οι παρακάτω δηλώσεις περιλαμβάνουν το άνοιγμα του προγράμματος περιήγησης chrome με τη διεύθυνση URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Η παραπάνω διεύθυνση URL είναι μια δοκιμαστική εφαρμογή για την επίδειξη της λειτουργικότητας μεταφόρτωσης αρχείων.
Βήμα 5) Κάντε κλικ στο κουμπί επιλογή αρχείου χρησιμοποιώντας την παρακάτω δήλωση
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Βήμα 6) Περιμένετε να εμφανιστεί το αναδυόμενο παράθυρο των παραθύρων. Η μέθοδος αναμονής χρησιμοποιείται για τη διαχείριση της καθυστέρησης που σχετίζεται με το άνοιγμα των παραθύρων που εμφανίζονται αφού κάνετε κλικ στο κουμπί αναζήτησης.
s.wait(fileInputTextBox, 20);
Βήμα 7) Πληκτρολογήστε τη διαδρομή του αρχείου στο πλαίσιο κειμένου του αρχείου εισόδου και κάντε κλικ στο κουμπί Άνοιγμα
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Βήμα 8) Κλείστε το πρόγραμμα περιήγησης
driver.close();
Παραγωγή:
Αρχικά, το σενάριο ανοίγει το πρόγραμμα περιήγησης chrome
Κάνοντας κλικ στο κουμπί "Επιλογή αρχείου", θα εμφανιστεί η αναδυόμενη οθόνη αρχείου των Windows. Εισάγει δεδομένα στο πλαίσιο κειμένου Εισαγωγή αρχείου και κάνει κλικ στο κουμπί «Άνοιγμα».
Η παρακάτω οθόνη εμφανίζεται μόλις ολοκληρωθεί η μεταφόρτωση του αρχείου και κλείνει το πρόγραμμα περιήγησης
Συμπέρασμα
Το Sikuli χρησιμοποιείται για το χειρισμό αντικειμένων flash σε μια ιστοσελίδα και τα παράθυρα ανοίγουν με ευκολία. Το Sikuli χρησιμοποιείται καλύτερα όταν τα στοιχεία στη διεπαφή χρήστη δεν αλλάζουν συχνά. Λόγω αυτού του μειονεκτήματος, από την άποψη της δοκιμής αυτοματισμού, το Sikuli έχει λιγότερη προτίμηση σε σύγκριση με άλλα πλαίσια όπως το Robot και το AutoIT.