Sikuli-Tutorial für Selenium Automation
Worin steckt Sikuli? Selenium?
Sikuli ist ein Open-Source-Tool zur Testautomatisierung auf GUI-Basis. Es wird hauptsächlich zur Interaktion mit Elementen von Webseiten und zur Handhabung von Windows-basierten Popups verwendet. Sikuli verwendet die Technik der „Bilderkennung“ und „GUI-Steuerung“, um mit Elementen von Webseiten und Windows-Popups zu interagieren. In Sikuli werden alle Webelemente als Bilder aufgenommen und im Projekt gespeichert.
So verwenden Sie Sikuli mit Selenium Webtreiber
Sikuli kann mithilfe der Sikuli-JAR-Datei in den Selenium-Webtreiber integriert werden.
Die folgende Reihenfolge ist die Liste der Schritte zum Konfigurieren von Sikuli mit Selenium Webdriver.
Schritt 1) Herunterladen Laden Sie die Sikuli-JAR-Datei von der folgenden URL herunter und extrahieren Sie den Inhalt der ZIP-Datei in einen Ordner.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Schritt 2) Erstellen Sie ein neues JAVA-Projekt in Eclipse und fügen Sie die JAR-Datei zusammen mit den Selenium-JAR-Dateien zum Build-Pfad hinzu, indem Sie mit der rechten Maustaste auf das Projekt klicken -> Build-Pfad -> Build-Pfad konfigurieren
Sobald Sie die JAR-Datei zum Projekterstellungspfad hinzugefügt haben, können von Sikuli bereitgestellte Klassen verwendet werden.
Bildschirmkurs in Sikuli
Die Screen-Klasse ist die Basisklasse für alle von Sikuli bereitgestellten Methoden. Die Screen-Klasse enthält vordefinierte Methoden für alle häufig ausgeführten Vorgänge an Bildschirmelementen wie Klicken, Doppelklicken, Eingabe in ein Textfeld, Hovern usw. Nachfolgend finden Sie die Liste der häufig verwendeten Methoden der Screen-Klasse.
Methodik | BESCHREIBUNG | Syntax |
---|---|---|
Klicke | Mit dieser Methode wird auf ein Element auf dem Bildschirm geklickt, wobei der Bildname als Parameter verwendet wird. | Bildschirm s = neuer Bildschirm();
s.click(“QA.png”); |
Doppelklick | Diese Methode wird zum Doppelklicken auf ein Element verwendet. Sie akzeptiert den Bildnamen als Parameter. | Bildschirm s = neuer Bildschirm();
s.doubleClick(„QA.png“); |
Typ | Diese Methode wird verwendet, um einem Element einen Eingabewert bereitzustellen. Es akzeptiert den Bildnamen und den zu sendenden Text als Parameter. |
s.type(„QA.png“, TEXT“); |
Schweben | Diese Methode wird verwendet, um mit der Maus über ein Element zu fahren. Es akzeptiert den Bildnamen als Parameter. |
s.hover(“QA.png”); |
Finde | Diese Methode wird verwendet, um ein bestimmtes Element auf dem Bildschirm zu finden. Es akzeptiert den Bildnamen als Parameter. |
s.find(“QA.png”); |
Musterkurs in Sikuli
Die Musterklasse wird verwendet, um der Bilddatei zusätzliche Attribute zuzuordnen, um das Element eindeutig zu identifizieren. Als Parameter wird der Pfad des Bildes verwendet.
Muster p = neues Muster („Pfad des Bildes“);
Im Folgenden sind die am häufigsten verwendeten Methoden der Pattern-Klasse aufgeführt.
Methodik | BESCHREIBUNG | Syntax |
---|---|---|
getFileName | Gibt den im Pattern-Objekt enthaltenen Dateinamen zurück. |
Muster p = neues Muster(“D:\Demo\QA.png”); String filename = p.getFileName(); |
ähnlich | Diese Methode gibt ein neues Musterobjekt zurück, dessen Ähnlichkeit auf einen angegebenen Wert festgelegt ist. Als Parameter wird der Ähnlichkeitswert zwischen 0 und 1 akzeptiert. Sikuli sucht nach allen Elementen, die in den angegebenen Ähnlichkeitsbereich fallen, und gibt ein neues Musterobjekt zurück. |
Muster p1 = p.similar(0.7f); |
Genau | Diese Methode gibt ein neues Musterobjekt zurück, dessen Ähnlichkeit auf 1 gesetzt ist. Sie sucht nur nach einer genauen Übereinstimmung mit dem angegebenen Element. |
Muster p1 = p.exact(); |
Codebeispiel für den Datei-Upload mit Sikuli
Der folgende Code erläutert die Verwendung von Sikuli zum Hochladen von Dateien 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(); } }
Code-Erklärung:
Schritt 1) Die erste Anweisung beinhaltet das Festlegen des ausführbaren Pfads des Treibers für Chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Schritt 2) Verwenden Sie ein Screengrab-Tool wie Snipping Tool um Screenshots von Windows-Popup 'FileTextBox' und 'Öffnen'-Taste.
So sollte Ihr Screenshot aussehen:-
Bilder für das Windows-Dateieingabetextfeld und die Schaltfläche „Öffnen“ werden unter „FileText“ gespeichert.Box.PNG‘ und ‚OpenButton.PNG‘.
Sikuli nutzt die Technik der Bilderkennung, um Elemente auf dem Bildschirm zu erkennen. Es findet Elemente auf dem Bildschirm ausschließlich anhand ihrer Bilder.
Beispiel: Wenn Sie das Öffnen des Editors automatisieren möchten, müssen Sie das Bild eines Desktopsymbols für den Editor in einer PNG-Datei speichern und darauf klicken.
In unserem Fall erkennt es das Textfeld für die Dateieingabe und öffnet die Schaltfläche Windows Popup mit den gespeicherten Bildern. Wenn sich die Bildschirmauflösung von der Bildaufnahme bis zur Ausführung des Testskripts ändert, ist das Verhalten von Sikuli inkonsistent. Daher ist es immer ratsam, das Testskript mit derselben Auflösung auszuführen, mit der die Bilder aufgenommen werden. Eine Änderung der Pixelgröße von Bildern führt dazu, dass Sikuli eine FindFailed-Ausnahme auslöst.
Schritt 3) Die nächsten Anweisungen umfassen die Erstellung von Objekten für die Klassen Screen und Pattern. Erstellen Sie ein neues Bildschirmobjekt. Legen Sie den Pfad der Datei, die Sie hochladen möchten, als Parameter für das Pattern-Objekt fest.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Schritt 4) Die folgenden Anweisungen beinhalten das Öffnen des Chrome-Browsers mit der URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
Bei der oben genannten URL handelt es sich um eine Demoanwendung zur Demonstration der Funktion zum Hochladen von Dateien.
Schritt 5) Klicken Sie mit der folgenden Anweisung auf die Schaltfläche „Datei auswählen“.
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Schritt 6) Warten Sie, bis das Windows-Popup angezeigt wird. Die Wait-Methode wird verwendet, um die Verzögerung zu bewältigen, die mit dem Öffnen des Windows-Popups nach dem Klicken auf die Schaltfläche „Durchsuchen“ verbunden ist.
s.wait(fileInputTextBox, 20);
Schritt 7) Geben Sie den Dateipfad in das Textfeld „Eingabedatei“ ein und klicken Sie auf die Schaltfläche „Öffnen“.
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Schritt 8) Schließen Sie den Browser
driver.close();
Ausgang:
Zunächst öffnet das Skript den Chrome-Browser
Klicken Sie auf die Schaltfläche „Datei auswählen“. Das Windows-Datei-Popup wird angezeigt. Geben Sie Daten in das Textfeld „Dateieingabe“ ein und klicken Sie auf die Schaltfläche „Öffnen“.
Der folgende Bildschirm wird angezeigt, sobald der Datei-Upload abgeschlossen ist und der Browser geschlossen wird
Fazit
Sikuli wird verwendet, um Flash-Objekte auf einer Webseite und Windows-Popups problemlos zu handhaben. Sikuli wird am besten verwendet, wenn sich die Elemente der Benutzeroberfläche nicht häufig ändern. Aufgrund dieses Nachteils wird Sikuli aus Sicht der Automatisierungstests im Vergleich zu anderen Frameworks wie Robot und AutoIT weniger bevorzugt.