Sikuli õpetus Selenium Automaatika

Milles Sikuli on Selenium?

Sikuli on avatud lähtekoodiga GUI-põhine testimise automatiseerimise tööriist. Seda kasutatakse peamiselt veebilehtede elementidega suhtlemiseks ja aknapõhiste hüpikakende haldamiseks. Sikuli kasutab veebilehtede elementidega ja akende hüpikakendega suhtlemiseks tehnikat "Image Recognition" ja "Control GUI". Sikulis võetakse kõik veebielemendid piltidena ja salvestatakse projekti sees.

Kuidas Sikulit kasutada koos Selenium Veebidraiver

Sikuli saab integreerida seleeni veebidraiveriga, kasutades Sikuli JAR faili.

Allpool on toodud sammude loend Sikuli seleeni veebidraiveriga konfigureerimiseks.

Samm 1) Laadige alla Sikuli JAR-faili allolevast URL-ist ja ekstraheerige ZIP-faili sisu kausta.

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

Kasutage Sikuli koos Selenium Veebidraiver

Step 2) Looge sisse uus JAVA projekt Eclipse ja lisage JAR-fail koostamise tee koos seleenipurgi failidega, paremklõpsates projektil -> Koostamise tee -> Konfigureeri ehitustee

kasuta Sikuli With Selenium Veebidraiver

Kui olete JAR-faili projekti ehitusteele lisanud, saate kasutada Sikuli pakutavaid klasse.

Ekraanitund Sikulis

Ekraaniklass on kõigi Sikuli pakutavate meetodite baasklassid. Ekraaniklass sisaldab eelmääratletud meetodeid kõigi ekraanielementidega sageli tehtavate toimingute jaoks, nagu klõps, topeltklõps, tekstikasti sisendi andmine, hõljutamine jne. Allpool on Screen klassi pakutud sagedamini kasutatavate meetodite loend.

Meetod Kirjeldus Süntaks
Click Seda meetodit kasutatakse elemendil klõpsamiseks ekraanil, kasutades parameetrina pildi nime. Ekraan s = uus Ekraan();

s.click("QA.png");

topeltklõps Seda meetodit kasutatakse elemendil topeltklõpsamiseks. See aktsepteerib parameetrina pildi nime. Ekraan s = uus Ekraan();

s.doubleClick("QA.png");

KASUTUSALA Seda meetodit kasutatakse elemendile sisendväärtuse andmiseks. See aktsepteerib parameetritena pildi nime ja saadetavat teksti.

s.type("QA.png","TEKST");

Hõljuma Seda meetodit kasutatakse elemendi kohal hõljutamiseks. See aktsepteerib parameetrina pildi nime.

s.hover("QA.png");

leidma Seda meetodit kasutatakse konkreetse elemendi leidmiseks ekraanilt. See aktsepteerib parameetrina pildi nime.

s.find("QA.png");

Mustritund Sikulis

Mustriklassi kasutatakse pildifaili seostamiseks täiendavate atribuutidega, et element unikaalselt tuvastada. See võtab parameetrina pildi tee.

Muster p = uus Muster(“Pildi tee”);

Järgmised on mustrite klassi kõige sagedamini kasutatavad meetodid.

Meetod Kirjeldus Süntaks
hanki failinimi Tagastab objektis Muster sisalduva failinime.

Muster p = uus muster ("D:\Demo\QA.png");

String failinimi = p.getFileName();

sarnane See meetod tagastab uue mustriobjekti, mille sarnasus on seatud määratud väärtusele. See aktsepteerib parameetrina sarnasuse väärtust vahemikus 0 kuni 1. Sikuli otsib kõik elemendid, mis jäävad määratud sarnasusvahemikku, ja tagastab uue mustriobjekti.

Muster p1 = p.sarnane(0.7f);

Täpne See meetod tagastab uue mustriobjekti, mille sarnasus on seatud väärtusele 1. See otsib ainult määratud elemendi täpset vastet.

Muster p1 = p.täpne();

Koodinäide faili üleslaadimiseks Sikuli abil

Allpool olev kood selgitab Sikuli kasutamist failide üleslaadimiseks 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();
    }
}

Koodi selgitus:

Step 1) Esimene väide hõlmab draiveri käivitatava tee määramist kroomi jaoks.

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

Step 2) Kasutage ekraanipildi tööriista, näiteks Snipping Tool et teha ekraanipilte Windowsi hüpikaknast 'FileTextBox' ja 'Ava' nupp.

Koodinäide faili üleslaadimiseks Sikuli abil

Teie ekraanipilt peaks välja nägema järgmine:

Koodinäide faili üleslaadimiseks Sikuli abil

Windowsi failisisestuse tekstikasti ja avamisnupu pildid salvestatakse failitekstiBox.PNG ja OpenButton.PNG.

Sikuli kasutab pildituvastuse tehnikat ekraani elementide äratundmiseks. See leiab ekraanilt elemente ainult nende piltide põhjal.

Näide: Kui soovite automatiseerida märkmiku avamist, peate salvestama märkmiku töölauaikooni kujutise PNG-faili ja tegema sellel klõpsamistoimingu.

Meie puhul tunneb see ära failisisestuse tekstikasti ja avab nupu Windows hüpikaken, kasutades salvestatud pilte. Kui ekraani eraldusvõime muutub pildihõivest testskripti täitmiseks, oleks Sikuli käitumine ebajärjekindel. Seetõttu on alati soovitatav käivitada testskript sama eraldusvõimega, millega pildid jäädvustatakse. Piltide pikslisuuruse muutmine põhjustab Sikuli FindFailed erandi.

Step 3) Järgmised laused hõlmavad objektide loomist klasside Screen ja Pattern jaoks. Looge uus ekraaniobjekt. Määrake objekti Muster parameetriks faili tee, mida soovite üles laadida.

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

Step 4) Järgmised avaldused hõlmavad Chrome'i brauseri avamist URL-iga: https://demo.guru99.com/test/image_upload/index.php

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

Ülaltoodud URL on demorakendus failide üleslaadimise funktsiooni demonstreerimiseks.

Step 5) Klõpsake alloleva avalduse abil faili valimise nuppu

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

Step 6) Oodake, kuni ilmub akna hüpikaken. Ootemeetodit kasutatakse akende avanemisega seotud viivituse käsitlemiseks pärast sirvimisnupul klõpsamist.

s.wait(fileInputTextBox, 20);

Step 7) Tippige faili tee sisendfaili tekstikasti ja klõpsake nuppu Ava

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

Step 8) Sulgege brauser

driver.close();

Väljund:

Esialgu avab skript Chrome'i brauseri

Koodinäide faili üleslaadimiseks Sikuli abil

Klõpsates nupul 'Vali fail', ilmub Windowsi faili hüpikaken. Sisestab andmed failisisestuse tekstikasti ja klõpsab nuppu "Ava".

Koodinäide faili üleslaadimiseks Sikuli abil

Pärast faili üleslaadimise lõpetamist ja brauseri sulgemist kuvatakse allolev ekraan

Koodinäide faili üleslaadimiseks Sikuli abil

Järeldus

Sikulit kasutatakse veebilehel olevate välklampide ja akende hüpikakende hõlpsaks käsitlemiseks. Sikulit on kõige parem kasutada siis, kui kasutajaliidese elemendid ei muutu sageli. Selle puuduse tõttu eelistatakse Sikulit automatiseerimise testimise vaatenurgast võrreldes teiste raamistikega, nagu Robot ja AutoIT, vähem.