Sikuli õpetus: kuidas Sikulit kasutada seleeniga (näide)
Sikuli Tutorial How Use Sikuli With Selenium
Selles õpetuses käsitleme järgmist:
Mis on Sikuli?
Ametlik veebisaidi dokument: https://sikulix-2014.readthedocs.io/en/latest/index.html
Sikuli on GUI-põhine avatud lähtekoodiga automatiseerimise tööriist. Seda kasutatakse veebisaidi elementidega suhtlemiseks ja aknapõhiste hüpikakende (lehtede) töötlemiseks. Veebilehe hüpikakende elementidega suhtlemiseks kasutab see pildituvastustehnoloogiat. Sikuli käsitleb kõiki veebilehe elemente piltidena ja tunneb need elemendid nende piltide põhjal ära. Sikuli on esimene valik, kui kasutajaliidese elemendid on stabiilsed ega muutu sageli.
Sikuli ja seleeni veebidraiveri integreerimine
Sikuli saab kasutada seleeni veebidraiveriga integreerimiseks Sikuli JAR-faile.
Järgmine järjestus on Sikuli seleeni veebidraiveri abil konfigureerimise sammude loend.
[Veel üks viis Jar-paketi konfigureerimiseks Mavenis:]
Samm 1) Laadige alla Sikuli JAR pakett järgmiselt URL-ilt: (näiteks sikulixsetup-1.1.3.jar)
https://launchpad.net/sikuli/+download
cdm Sisestage failikataloog, kus asub sikulixsetup, ja käivitage pakett Jar: java -jar sikulixsetup-1.1.3.jar
Vastloodud purgipakett on näidatud allpool:
2. samm) Seejärel looge Eclipse'is uus JAVA-projekt ja paremklõpsake projekti -> Ehituse tee -> Koosta tee seadistamine -, et lisada JAR-fail ehitusraja ja seleenipurgi paketti.
org.seleniumhq.selenium selenium-java 3.14.0
Kui JAR-fail on projekti koostamise teele lisatud, saate kasutada Sikuli pakutavaid klasse.
Nõuanne: kui te ei järgi ülaltoodud meetodit, võib käivitamine ebaõnnestuda ja Sikuli teatab veast pidevalt [viga] RunTimeINIT: lõpetamine: eksportimiseks mõeldud libs ei leitud ülalt klassi rajalt: / sikulixlibs / windows / libs64 **
Sikuli klassi ekraan
Klass Ekraan on kõigi Sikuli pakutavate meetodite baasklass. Klass Ekraan sisaldab eelnevalt määratletud meetodeid kõigi tavaliste toimingute jaoks ekraanielementidel, näiteks klõpsamine, topeltklõps, tekstikasti sisestamine, hõljutamine jne. Järgnevas loendis on ekraaniklassi pakutavad levinumad meetodid
Meetod | Kirjeldus | Süntaks |
---|---|---|
Klõpsake nuppu | Seda meetodit kasutatakse elemendi klõpsamiseks ekraanil, kasutades parameetrina pildi nime. | Ekraan s = uus ekraan () s.click (“QA.png”) |
topeltklõps | Seda meetodit kasutatakse elemendi topeltklõpsamiseks. See aktsepteerib parameetrina pildi nime. | Ekraan s = uus ekraan () s.doubleClick (“QA.png”) |
Sisestage sisend | Seda meetodit kasutatakse elemendi sisendväärtuste pakkumiseks. See aktsepteerib parameetritena pildi nime ja teksti. | s.type („QA.png”, „TEXT”) |
Hõljuma | Seda meetodit kasutatakse hiire hõljutamiseks elemendi kohal. See aktsepteerib parameetrina pildi nime. | s.hover („QA.png”) |
Leidke | Seda meetodit kasutatakse ekraanilt konkreetsete elementide leidmiseks. See aktsepteerib parameetrina pildi nime. | s.find („QA.png”) |
Sikuli muster
Klass Pattern kasutatakse piltide failide seostamiseks muude atribuutidega, et elemente ainulaadselt tuvastada. See võtab parameetrina pildi tee.
Muster p = uus muster ('pildi tee')
Järgnevad mustriklasside kõige sagedamini kasutatavad meetodid.
Meetod | Kirjeldus | Süntaks |
---|---|---|
getFileName | Tagastab objektis Muster sisalduva failinime. | Muster p = uus muster (“D: Demo QA.png”) Stringi failinimi = p.getFileName () |
sarnased | See meetod tagastab uue mustriobjekti, mille sarnasus on määratud määratud väärtusega. See aktsepteerib parameetrina sarnasuse väärtust 0 ja 1 vahel. Sikuli leiab kõik määratud sarnasesse vahemikku kuuluvad elemendid ja tagastab uue mustriobjekti. | Muster p1 = p.sarnane (0,7f) |
Täpselt | See meetod tagastab uue mustriobjekti, mille sarnasus on seatud väärtusele 1. See leiab ainult Täpne vaste 。 | Muster p1 = p.täpne () |
Koodinäide failide üleslaadimiseks Sikuli abil
Järgmine kood selgitab, kuidas faile Chrome'i brauserisse Sikuli abil üles laadida.
// Ärge laadige sikuli.script.jar otse alla ja importige , Tuleb genereerida ülaltoodud viisil.
package com.morningstar.sikuli 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', 'resources/Driver/chromedriver.exe') String filepath = 'resources/' String inputFilePath = 'resources/' 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('http://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 tõlgendamine:
Samm 1), Esimene lause hõlmab draiveri käivitatava tee määramist kroomi jaoks.
System.setProperty('webdriver.chrome.driver', 'D:\ chromedriver.exe')
2. samm) 、 Kasutage ekraanipildi tööriista, näiteks ekraanipildi tööriista, et teha ekraanipilt hüpiknuppudest FileTextBox ja Open.
Teie ekraanipilt peaks välja nägema järgmine:
Windowsi fail Sisestuskast koos Ava nupp Pilte salvestatakse failidena FileTextBox.PNG ja OpenButton.PNG.
Sikuli kasutab ekraanil kuvatavate elementide tuvastamiseks pildituvastustehnoloogiat. See leiab elemendi ekraanilt ainult pildi põhjal.
Näiteks: kui soovite Notepadi automaatselt avada, peate Notepadi töölauaikooni pildi salvestama PNG-faili ja tegema sellel ühe klõpsuga toimingu.
Meie ülaltoodud näites tunneb see ära Faili sisestamise tekstikast Ja salvestatud pildi abil saate avada Windowsi hüpikakna nupu. Kui ekraani eraldusvõimet muudetakse pildi hõivamisest skripti täitmise testimiseks, on Sikuli tulemused vastuolulised. Seetõttu on testskript alati soovitatav käivitada pildistatud pildi sama eraldusvõimega. Kujutise pikslite suuruse muutmine paneb Sikuli viskama FindFailedi erandi.
3. samm) 、 Järgmised väited hõlmavad ekraani ja mustri objektide loomist. Looge uus ekraaniobjekt. Määrake üleslaaditud faili tee mustri objekti parameetriks.
Screen s = new Screen() Pattern fileInputTextBox = new Pattern(filepath + 'FileTextBox.PNG') Pattern openButton = new Pattern(filepath + 'OpenButton.PNG')
4. samm) Järgmine lause hõlmab URL-i avamist Chrome'i brauseri abil: http://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver() driver.get('http://demo.guru99.com/test/image_upload/index.php')
Ülaltoodud URL on demorakendus, mis näitab failide üleslaadimise funktsiooni.
5. samm) Järgmise lause kasutamiseks klõpsake nuppu Vali fail
driver.findElement(By.xpath('.//*[@id='photoimg']')).click()
6. samm) Oodake hüpikakna ilmumist. Ootemeetodit kasutatakse hüpikaknaga seotud viivituse käsitlemiseks pärast sirvimisnupul klõpsamist.
s.wait(fileInputTextBox, 20)
7. samm) Sisestage tekstiväljale 'Sisendfail' faili tee ja klõpsake nuppu 'Ava'
s.type(fileInputTextBox, inputFilePath + 'Test.docx') s.click(openButton)
8. samm) Sulgege brauser
driver.close()
Lõpuks:
Alguses avas skript brauseri
Klõpsake nuppu „Vali fail” ja kuvatakse Windowsi faili hüpikaken. Sisestage tekstiväljale andmesisestusfail ja klõpsake nuppu Ava
Pärast faili üleslaadimist ja brauseri sulgemist kuvatakse järgmine ekraan
Kokkuvõtteks:
Sikulit kasutatakse veebilehtede ja Windowsi hüpikakende välklambiobjektide töötlemiseks. Kui kasutajaliidese elemendid ei muutu sageli, on parem kasutada Sikulit. Selle puuduse tõttu on Sikulil automatiseeritud testimise seisukohalt võrreldes teiste raamistikega (näiteks Robot ja AutoIT) vähem eelistusi.
Lisalugu ----- piltide kontroll:
Sikuli abil saab tuvastada, kas pildil on teatud osa pildist. See on väga kasulik, näiteks kontrollida, kas terves pildis on ilmne logo vms.
String imgPath = 'xxxx/image.png' Screen s = new Screen() boolean test = s.exists(imgPath).isValid() System.out.println('########Test======'+test)
või:
String imgPath = 'xxxx/image.png' Screen s = new Screen() Assert.assertTrue(s.exists(imgPath).isValid(), 'can not find the LOGO:' + Page1And16) . . . //Search based on image object public static boolean isExist(String iconPath) throws FindFailed{ boolean isVaild = false pattern = new Pattern(iconPath) screen = new Screen() try { //screen.wait(iconPath, 20) Image image = screen.find(pattern).getImage() System.out.println('########IMAGE===='+image) isVaild = image != null } catch (FindFailed e) { e.printStackTrace() System.err.println(e.getMessage()) } clear() return isVaild } public static void clear(){ if(pattern != null){ pattern = null } if(screen != null){ screen = null } }