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

Verwenden Sie Sikuli mit Selenium Webtreiber

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

Verwenden Sie Sikuli mit Selenium Webtreiber

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.

Codebeispiel für das Hochladen von Dateien mit Sikuli

So sollte Ihr Screenshot aussehen:-

Codebeispiel für das Hochladen von Dateien mit Sikuli

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

Codebeispiel für das Hochladen von Dateien mit Sikuli

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“.

Codebeispiel für das Hochladen von Dateien mit Sikuli

Der folgende Bildschirm wird angezeigt, sobald der Datei-Upload abgeschlossen ist und der Browser geschlossen wird

Codebeispiel für das Hochladen von Dateien mit Sikuli

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.