Tutorial til Sikuli Selenium Automation

Hvad er Sikuli i Selenium?

Sikuli er et open source GUI-baseret testautomatiseringsvรฆrktรธj. Det bruges hovedsageligt til at interagere med elementer pรฅ websider og hรฅndtere vinduesbaserede popups. Sikuli bruger teknikken "Image Recognition" og "Control GUI" til at interagere med elementer af websider og popup-vinduer i vinduer. I Sikuli er alle webelementerne taget som billeder og gemt inde i projektet.

Sรฅdan bruger du Sikuli med Selenium Webdriver

Sikuli kan integreres med selen webdriver ved hjรฆlp af Sikuli JAR-filen.

Nedenstรฅende sekvens er listen over trin til at konfigurere Sikuli med selen webdriver.

Trin 1) Download Sikuli JAR-filen fra nedenstรฅende URL, og udpak indholdet af ZIP-filen til en mappe.

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5

Brug Sikuli med Selenium Webdriver

Trin 2) Opret et nyt JAVA-projekt i Eclipse og tilfรธj JAR-filen til build-stien sammen med selen-jar-filer ved hjรฆlp af hรธjreklik pรฅ projektet -> Build Path -> Konfigurer Build Path

brug Sikuli With Selenium Webdriver

Nรฅr du har tilfรธjet JAR-filen til projektets byggesti, kan klasser leveret af Sikuli bruges.

Skรฆrmklasse i Sikuli

Skรฆrmklasse er basisklasserne for alle metoderne leveret af Sikuli. Skรฆrmklassen indeholder foruddefinerede metoder til alle de almindeligt udfรธrte operationer pรฅ skรฆrmelementer sรฅsom klik, dobbeltklik, input til en tekstboks, svรฆv osv. Nedenstรฅende er listen over almindeligt anvendte metoder leveret af skรฆrmklassen.

Metode Beskrivelse Syntaks
Klik Denne metode bruges til at klikke pรฅ et element pรฅ skรฆrmen med billednavn som parameter. Skรฆrm s = ny skรฆrm();

s.click(โ€œQA.pngโ€);

dobbeltklik Denne metode bruges til at dobbeltklikke pรฅ et element. Den accepterer billednavn som parameter. Skรฆrm s = ny skรฆrm();

s.doubleClick(โ€œQA.pngโ€);

Type Denne metode bruges til at give inputvรฆrdi til et element. Den accepterer billednavnet og teksten, der skal sendes som parametre.

s.type(โ€œQA.pngโ€,,โ€TEXTโ€);

Hover Denne metode bruges til at holde markรธren over et element. Den accepterer billednavn som parameter.

s.hover(โ€œQA.pngโ€);

Finde Denne metode bruges til at finde et bestemt element pรฅ skรฆrmen. Den accepterer billednavn som parameter.

s.find(โ€œQA.pngโ€);

Mรธnsterklasse i Sikuli

Mรธnsterklassen bruges til at associere billedfilen med yderligere attributter for entydigt at identificere elementet. Det tager billedets sti som en parameter.

Mรธnster p = nyt mรธnster(โ€œBilledets stiโ€);

Fรธlgende er de mest almindeligt anvendte metoder i Pattern-klassen.

Metode Beskrivelse Syntaks
getFileName Returnerer filnavnet indeholdt i Pattern-objektet.

Mรธnster p = nyt mรธnster(โ€œD:\Demo\QA.pngโ€);

String filnavn = p.getFileName();

lignende Denne metode returnerer et nyt Pattern-objekt med lighed sat til en specificeret vรฆrdi. Den accepterer lighedsvรฆrdien mellem 0 til 1 som en parameter. Sikuli leder efter alle elementer, der falder inden for det angivne lighedsomrรฅde og returnerer et nyt mรธnsterobjekt.

Mรธnster p1 = p.similar(0.7f);

Prรฆcis Denne metode returnerer et nyt mรธnsterobjekt med lighed sat til 1. Den leder kun efter en nรธjagtig match af det angivne element.

Mรธnster p1 = p.exact();

Kodeeksempel for filupload ved hjรฆlp af Sikuli

Nedenstรฅende kode forklarer brugen af โ€‹โ€‹Sikuli til filupload i 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();
    }
}

Kodeforklaring:

Trin 1) Den fรธrste sรฆtning involverer indstilling af driverens eksekverbare sti til chrome.

System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");

Trin 2) Brug et screengrab-vรฆrktรธj som f.eks Snipping Tool for at tage skรฆrmbilleder af windows popup 'FileTextBox' og 'ร…bn'-knappen.

Kodeeksempel til filupload ved hjรฆlp af Sikuli

Sรฅdan skal dit skรฆrmbillede se ud:

Kodeeksempel til filupload ved hjรฆlp af Sikuli

Billeder til Windows-filinput tekstboks og รฅben knap gemmes pรฅ 'FileTextBox.PNG' og 'OpenButton.PNG'.

Sikuli bruger teknikken med billedgenkendelse til at genkende elementer pรฅ skรฆrmen. Den finder elementer pรฅ skรฆrmen udelukkende baseret pรฅ deres billeder.

Eksempel: Hvis du vil automatisere betjeningen af โ€‹โ€‹at รฅbne notesblok, skal du gemme billedet af et skrivebordsikon til notesblok pรฅ en PNG-fil og udfรธre klikoperation pรฅ den.

I vores tilfรฆlde genkender den filinput tekstboksen og รฅbner knappen pรฅ Windows popup ved hjรฆlp af de gemte billeder. Hvis skรฆrmoplรธsningen รฆndres fra billedoptagelse til udfรธrelse af testscript, ville Sikulis adfรฆrd vรฆre inkonsekvent. Derfor er det altid tilrรฅdeligt at kรธre testscriptet med den samme oplรธsning, som billederne er taget med. ร†ndring i pixelstรธrrelse pรฅ billeder vil resultere i, at Sikuli kaster en FindFailed-undtagelse.

Trin 3) De nรฆste udsagn inkluderer oprettelsen af โ€‹โ€‹objekter til skรฆrm- og mรธnsterklasser. Opret et nyt skรฆrmobjekt. Indstil stien til den fil, du vil uploade som en parameter til Pattern-objektet.

Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");

Trin 4) Nedenstรฅende udsagn involverer รฅbning af Chrome-browseren med URL'en: https://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");

Ovenstรฅende URL er en demoapplikation til at demonstrere filoverfรธrselsfunktionalitet.

Trin 5) Klik pรฅ knappen vรฆlg fil ved hjรฆlp af nedenstรฅende erklรฆring

driver.findElement(By.xpath(".//*[@id='photoimg']")).click();

Trin 6) Vent pรฅ, at popup-vinduet vises. Vent-metoden bruges til at hรฅndtere forsinkelsen, der er forbundet med at รฅbne vinduer, som dukker op efter klik pรฅ gennemse-knappen.

s.wait(fileInputTextBox, 20);

Trin 7) Indtast filstien pรฅ inputfilens tekstboks, og klik pรฅ knappen ร…bn

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

Trin 8) Luk browseren

driver.close();

Output:

I fรธrste omgang รฅbner scriptet chrome-browseren

Kodeeksempel til filupload ved hjรฆlp af Sikuli

Hvis du klikker pรฅ knappen 'Vรฆlg fil', vises popup-skรฆrmen for Windows-filen. Indsรฆtter data i filindtastningsfeltet og klikker pรฅ knappen 'ร…bn'

Kodeeksempel til filupload ved hjรฆlp af Sikuli

Nedenstรฅende skรฆrm vises, nรฅr filoverfรธrslen er fuldfรธrt og lukker browseren

Kodeeksempel til filupload ved hjรฆlp af Sikuli

Konklusion

Sikuli bruges til nemt at hรฅndtere flash-objekter pรฅ en webside og popup-vinduer. Sikuli bruges bedst, nรฅr elementerne pรฅ brugergrรฆnsefladen ikke รฆndres ofte. Pรฅ grund af denne ulempe, fra et automationstestperspektiv, gives Sikuli mindre prรฆference sammenlignet med andre rammer sรฅsom Robot og AutoIT.

Opsummer dette indlรฆg med: