Sikuli opplæring for Selenium Automatisering
Hva er Sikuli i Selenium?
Sikuli er et åpen kildekode GUI-basert testautomatiseringsverktøy. Den brukes hovedsakelig til å samhandle med elementer på nettsider og håndtere vinduer baserte popup-vinduer. Sikuli bruker teknikken "Image Recognition" og "Control GUI" for å samhandle med elementer på nettsider og popup-vinduer i vinduer. I Sikuli er alle webelementene tatt som bilder og lagret inne i prosjektet.
Hvordan bruke Sikuli med Selenium Webdriver
Sikuli kan integreres med selen webdriver ved å bruke Sikuli JAR-filen.
Sekvensen nedenfor er listen over trinn for å konfigurere Sikuli med selen webdriver.
Trinn 1) Last ned Sikuli JAR-filen fra URL-en nedenfor, og pakk ut innholdet i ZIP-filen til en mappe.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Trinn 2) Opprett et nytt JAVA-prosjekt i Eclipse og legg til JAR-filen for å bygge banen, sammen med selen jar-filer ved hjelp av Høyreklikk på prosjektet -> Bygg bane -> Konfigurer byggebane
Når du har lagt til JAR-filen i prosjektets byggebane, kan klasser levert av Sikuli brukes.
Skjermklasse i Sikuli
Skjermklassen er basisklassene for alle metodene som tilbys av Sikuli. Skjermklassen inneholder forhåndsdefinerte metoder for alle de vanligste operasjonene på skjermelementer som klikk, dobbeltklikk, gi input til en tekstboks, sveve, osv. Nedenfor er listen over vanlige metoder levert av Skjermklassen.
| Metode | Tekniske beskrivelser | syntax |
|---|---|---|
| Klikk | Denne metoden brukes til å klikke på et element på skjermen med bildenavn som parameter. | Skjerm s = ny skjerm();
s.click(“QA.png”); |
| dobbeltklikk | Denne metoden brukes til å dobbeltklikke på et element. Den godtar bildenavn som parameter. | Skjerm s = ny skjerm();
s.doubleClick(“QA.png”); |
| typen | Denne metoden brukes til å gi inngangsverdi til et element. Den godtar bildenavnet og teksten som skal sendes som parametere. |
s.type(“QA.png”,,”TEXT”); |
| Sveve | Denne metoden brukes til å holde musepekeren over et element. Den godtar bildenavn som parameter. |
s.hover(“QA.png”); |
| Finn | Denne metoden brukes til å finne et spesifikt element på skjermen. Den godtar bildenavn som parameter. |
s.find(“QA.png”); |
Mønsterklasse i Sikuli
Mønsterklassen brukes til å knytte bildefilen til ytterligere attributter for å identifisere elementet unikt. Den tar banen til bildet som en parameter.
Mønster p = nytt mønster("Biletsti");
Følgende er de mest brukte metodene i Pattern-klassen.
| Metode | Tekniske beskrivelser | syntax |
|---|---|---|
| getFileName | Returnerer filnavnet i Pattern-objektet. |
Mønster p = nytt mønster(“D:\Demo\QA.png”); String filnavn = p.getFileName(); |
| lignende | Denne metoden returnerer et nytt Pattern-objekt med likhet satt til en spesifisert verdi. Den aksepterer likhetsverdien mellom 0 til 1 som en parameter. Sikuli ser etter alle elementer som faller innenfor det angitte likhetsområdet og returnerer et nytt mønsterobjekt. |
Mønster p1 = p.similar(0.7f); |
| Nøyaktig | Denne metoden returnerer et nytt mønsterobjekt med likhet satt til 1. Den ser bare etter en eksakt match av det angitte elementet. |
Mønster p1 = p.exact(); |
Kodeeksempel for filopplasting med Sikuli
Koden nedenfor forklarer bruken av Sikuli for filopplasting 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:
Trinn 1) Den første setningen innebærer å angi driverens kjørbare banen for chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Trinn 2) Bruk et screengrab-verktøy som f.eks Snipping Tool for å ta skjermbilder av Windows-popup 'FileTextBox' og 'Åpne'-knappen.
Slik skal skjermbildet ditt se ut:-
Bilder for tekstboks for Windows-filinntasting og åpne-knapp er lagret i 'FileTextBox.PNG' og 'OpenButton.PNG'.
Sikuli bruker teknikken med bildegjenkjenning for å gjenkjenne elementer på skjermen. Den finner elementer på skjermen utelukkende basert på bildene deres.
Eksempel: Hvis du vil automatisere operasjonen for å åpne notisblokk, må du lagre bildet av et skrivebordsikon for notisblokk på en PNG-fil og utføre klikkoperasjon på den.
I vårt tilfelle gjenkjenner den filinndatatekstboksen og åpner knappen på Windows popup ved hjelp av bildene som er lagret. Hvis skjermoppløsningen endres fra bildeopptak til utførelse av testskript, vil oppførselen til Sikuli være inkonsekvent. Derfor er det alltid tilrådelig å kjøre testskriptet med samme oppløsning som bildene blir tatt med. Endring i pikselstørrelse på bilder vil resultere i at Sikuli kaster et FindFailed-unntak.
Trinn 3) De neste setningene inkluderer opprettelsen av objekter for skjerm- og mønsterklasser. Opprett et nytt skjermobjekt. Angi banen til filen du vil laste opp som en parameter til Pattern-objektet.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Trinn 4) Utsagnene nedenfor innebærer å åpne Chrome-nettleseren med nettadressen: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
URL-adressen ovenfor er en demoapplikasjon for å demonstrere filopplastingsfunksjonalitet.
Trinn 5) Klikk på velg fil-knappen ved å bruke uttalelsen nedenfor
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Trinn 6) Vent til vinduets popup vises. Ventemetoden brukes til å håndtere forsinkelsen forbundet med å åpne vinduer som dukker opp etter å ha klikket på bla-knappen.
s.wait(fileInputTextBox, 20);
Trinn 7) Skriv inn filbanen i inndatafilens tekstboks og klikk på Åpne-knappen
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Trinn 8) Lukk nettleseren
driver.close();
Utgang:
Til å begynne med åpner skriptet Chrome-nettleseren
Klikker du på 'Velg fil'-knappen, vil popup-skjermen for Windows-fil vises. Legger inn data i filinndata-tekstboksen og klikker på "Åpne"-knappen
Skjermen nedenfor vises når filopplastingen er fullført og lukker nettleseren
Konklusjon
Sikuli brukes til å håndtere flash-objekter på en nettside og popup-vinduer i Windows med letthet. Sikuli brukes best når elementene i brukergrensesnittet ikke endres ofte. På grunn av denne ulempen, fra et automasjonstestingsperspektiv, gis Sikuli mindre preferanse sammenlignet med andre rammeverk som Robot og AutoIT.







