Mis on seleeniraamistik?
Seleen Framework on koodi struktuur, mis muudab koodi hooldus lihtne ja tõhus. Ilma raamistiketa võivad kasutajad paigutada „koodi” ja „andmed” samasse kohta, mida ei saa taaskasutada ega lugeda. Raamistikud annavad kasulikke tulemusi, näiteks suurenenud koodi korduvkasutatavus, suurem teisaldatavus, skripti hooldamise madalamad kulud, parem koodi loetavus jne.
Manuaalsete testjuhtumite automatiseerimiseks on peamiselt kolme tüüpi raame, mille Selenium WebDriver on loonud
- Andmepõhine testiraamistik
- Märksõnadega juhitud testiraamistik
- Hübriidkatse raamistik
Andmepõhine raamistik seleenis
Andmepõhine raamistik seleenis on meetod andmekogumite eraldamiseks testjuhtumist. Kui andmekogumid on testjuhust eraldatud, saab seda koodi muutmata hõlpsasti konkreetse funktsionaalsuse jaoks muuta. Seda kasutatakse testjuhtumite ja komplektide toomiseks välistest failidest nagu Excel, .csv, .xml või mõnest andmebaasitabelist.
Exceli lugemiseks või kirjutamiseks pakub Apache väga kuulsa teegi HP-d. See teek on piisavalt võimeline Exceli XLS- ja XLSX- failivormingute lugemiseks ja kirjutamiseks .
XLS- failide lugemiseks pakub POI teek HSSF-i rakendust.
XLSX-i lugemiseks on valida POI- teegi XSSF-i rakendamine . Uurime neid rakendusi üksikasjalikult.
Andmepõhise testimise kohta õppisime juba oma eelmises õpetuses
Märksõnaga juhitud raamistik seleenis
Märksõnade juhitud raamistik seleenis on meetod, mida kasutatakse automatiseeritud testimise kiirendamiseks, eraldades märksõnad ühiste funktsioonide ja juhiste komplekti jaoks. Kõik tehtavad toimingud ja juhised on kirjutatud mõnes välises failis nagu Exceli leht. Kasutajad saavad hõlpsalt kontrollida ja määrata funktsioone, mida nad testida soovivad.
Nii näeb välja täielik raamistik
Nagu näete, on see 5-astmeline raamistik. Uurime seda järk-järgult üksikasjalikult
Samm 1)
- Draiveri skript Execute.java kutsub ReadGuru99ExcelFile.java
- ReadGuru99ExcelFile.java'l on POI-skript Exceli andmete lugemiseks
2. samm)
- ReadGuru99ExcelFile.java loeb andmeid saidilt TestCase.xlsx
- Siit näeb leht välja -
- Vastavalt Exceli faili kirjutatud märksõnadele täidab raamistik toimingu kasutajaliideses.
- Näiteks peame klõpsama nupul "Logi sisse". Vastavalt on meie Excelis märksõna „Click”. Nüüd võib AUT-il lehel olla sadu nuppe, et tuvastada sisselogimisnupp. Excelis sisestame nimena sisselogimisnupuna objekti tüübi ja nimena objekti tüübi (vt ülaltoodud pildi rida). Objekti tüüp võib olla Xpath, nimi CSS või mõni muu väärtus
Samm 3) ReadGuru99ExcelFile.java edastab need andmed draiveri skriptile Execute.java
4. samm)
- Kõigi meie kasutajaliidese veebielementide jaoks peame looma objektihoidla, kuhu paigutame nende elementide asukoha (näiteks Xpath, nimi, CSS-i tee, klassi nimi jne)
- Execute.java (meie draiveri skript) loeb kogu objekti hoidla ja salvestab selle muutujasse
- Selle objekti hoidla lugemiseks vajame klassi ReadObject, mille lugemiseks on meetod getObjectRepository.
MÄRKUS. Võite mõelda, miks peame looma objektide hoidla. Vastus aitab koodi hooldamisel. Näiteks kasutame nuppu name = btnlogin kümnel erineval juhul. Edaspidi otsustab arendaja nime esitamiseks btnlogini nime muuta. Kõigis 10 testjuhtumis peate tegema muudatuse. Objektihoidla puhul saate muudatuse teha ainult üks kord hoidlas.
5. samm)
- Juht edastab andmed Exceli ja objektide hoidlast UIOperation klassi
- UIOperation klassil on funktsioonid toimingute tegemiseks, mis vastavad Excelis mainitud märksõnadele nagu CLICK, SETTEXT jne.
- UIOperation klass on Java klass, millel on koodi tegelik juurutamine veebielementidega toimingute tegemiseks
Kogu projekt näeb välja nagu
Uurime näidet:
Testi stsenaarium
- Teostame 2 testjuhtumit
- 1. juhtum:
- Liigu http://demo.guru99.com/V4/
- Sisestage kasutajatunnus
- Sisestage parool
- Klõpsake nuppu Lähtesta
- 2. juhtum:
- Liigu http://demo.guru99.com/V4/
- Sisestage kasutajatunnus
- Sisestage parool
- Klõpsake nuppu Logi sisse
objekt.omadused
url = http: //demo.guru99.com/V4/
kasutajanimi = uid
parool = parool
pealkiri = parun
loginButton = btnLogin
resetButton = btnReset
ReadGuru99ExcelFile.java
pakett excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;avalik klass ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) viskab IOException {// xlsx-faili avamiseks looge failiklassi objektFailifail = uus fail (filePath + "\\" + failinimi);// Exceli faili lugemiseks looge klassi FileInputStream objektFileInputStream inputStream = uus FileInputStream (fail);Töövihik guru99Workbook = null;// Leidke faililaiend, jagades alamjaamas failinime ja hankides ainult laienduse nimeString fileExtensionName = failinimi.substring (failinimi.indexOf ("."));// Kontrollige tingimust, kui fail on xlsx-failkui (fileExtensionName.equals (". xlsx")) {// Kui see on xlsx-fail, siis looge klassi XSSFWorkbook objektguru99Workbook = uus XSSFWorkbook (inputStream);}// Kontrollige tingimust, kui fail on xls-failelse if (fileExtensionName.equals (". xls")) {{// Kui see on fail xls, looge klassi XSSFWorkbook objektguru99Workbook = uus HSSFWorkbook (inputStream);}// Loe töövihiku sees olevat lehte selle nime järgiLeht guru99Sheet = guru99Workbook.getSheet (sheetName);tagastage guru99Sheet;}}
ReadObject.java
paki käitamine;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Kohad;avalik klass ReadObject {Atribuudid p = new Properties ();public Properties getObjectRepository () viskab IOExceptioni {// Loe objekti hoidla failiInputStream stream = new FileInputStream (new File (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// laadige kõik objektidp.load (voog);tagasipöördumine p;}}
UIOoperatsioon.java
paki käitamine;import java.util.Kohad;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;avaliku klassi UIOoperatsioon {WebDriveri draiver;avalik UIOoperation (WebDriveri draiver) {see.juht = draiver;}public void perform (Atribuudid p, Stringi toiming, String objectName, String objectType, Stringi väärtus) viskab Exception {System.out.println ("");lüliti (operation.toUpperCase ()) {juhtum "KLÕPSAKE":// Tehke klõpsdraiver.findElement (see.getObject (p, objektiNimi, objektiTüüp)). klõpsake ();murda;juhtum "SETTEXT":// Määra tekst juhtimiseledraiver.findElement (see.getObject (p, objektiNimi, objektiTüüp)). sendKeys (väärtus);murda;juhtum "GOTOURL":// Hankige rakenduse URLdraiver.get (p.getProperty (väärtus));murda;juhtum "GETTEXT":// Hangi elemendi tekstdraiver.findElement (see.getObject (p, objektiNimi, objektiTüüp)). getText ();murda;vaikimisi:murda;}}/ *** Leidke element BY, kasutades objekti tüüpi ja väärtust* @param lk* @param objektiNimi* @param objectType* @return* @throws Erand* /privaatne GetObject (Atribuudid p, String objectName, String objectType) viskab erandi {// Leia xpathi järgiif (objectType.equalsIgnoreCase ("XPATH")) {tagastage By.xpath (p.getProperty (objectName));}// leida klassi järgielse if (objectType.equalsIgnoreCase ("CLASSNAME")) {{tagastage By.className (p.getProperty (objectName));}// leia nime järgielse if (objectType.equalsIgnoreCase ("NAME")) {tagastage By.name (p.getProperty (objectName));}// Leia csselse if (objectType.equalsIgnoreCase ("CSS")) {tagastage By.cssSelector (p.getProperty (objectName));}// leida lingi kauduelse if (objectType.equalsIgnoreCase ("LINK")) {{tagastage By.linkText (p.getProperty (objektiNimi));}// leidmine osalise lingi abilelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {{tagastage By.partialLinkText (p.getProperty (objectName));} muud{viska uus erand ("Vale objekti tüüp");}}}
ExecuteTest.java
pakendi testCases;import java.util.Kohad;imporditoiming.ReadObject;imporditoiming. UIOoperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;impordi excelExportAndFileIO.ReadGuru99ExcelFile;avalik klass ExecuteTest {@Testpublic void testLogin () viskab erandi {// TODO Automaatselt loodud meetodi tüviWebDriver webdriver = uus FirefoxDriver ();ReadGuru99ExcelFile fail = uus ReadGuru99ExcelFile ();ReadObject objekt = uus ReadObject ();Atribuudid allObjects = object.getObjectRepository ();UIOoperation = uus UIOperation (veebidraiver);// Loe märksõnade lehteLeht guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Leia Exceli failist ridade arvint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Selle lugemiseks looge silmus Exceli faili kõigi ridade kohaljaoks (int i = 1; i" + rida.getCell (0) .toString () + "Alustatud");}}}}
Pärast käivitamist näeb väljund välja nagu -
Laadige selles õpetuses alla Seleeni projektifailid demo jaoks
Hübriidraamistik
Hübriidraamistik seleenis on kontseptsioon, kus kasutame nii märksõnapõhise raamistiku kui ka andmepõhise raamistiku eeliseid. See on hõlpsasti kasutatav raamistik, mis võimaldab käsitsi testijatel luua juhtumeid, vaadates lihtsalt märksõnu, testiandmeid ja objektide hoidlat ilma raamistikus kodeerimata.
Märksõnade jaoks kasutame testijuhtumite säilitamiseks Exceli faile ja testandmete jaoks saame kasutada andmeid, Testng raamistiku pakkujat.
Siin pole meie hübriidraamistikus vaja midagi muuta märksõnapõhises raamistikus, siin peame lihtsalt ExecuteTest.java faili asendama failiga HybridExecuteTest.java.
Selles HybridExecuteTest-failis on kogu kood andmesidepakkuja kontseptsiooniga juhitavate märksõnade jaoks.
Hübriidraamistiku täielik piltlik kujutis näeb välja
HybridExecuteTest.java
pakendi testCases;import java.io.IOException;import java.util.Kohad;imporditoiming.ReadObject;imporditoiming. UIOoperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;impordi excelExportAndFileIO.ReadGuru99ExcelFile;public class HybridExecuteTest {WebDriver veebidraiver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) viskab erandi {// TODO Automaatselt loodud meetodi tüviif (testcaseName! = null && testcaseName.length ()! = 0) {veebidraiver = uus FirefoxDriver ();}ReadObject objekt = uus ReadObject ();Atribuudid allObjects = object.getObjectRepository ();UIOoperation = uus UIOperation (veebidraiver);// Funktsioon Call perform kasutajaliidese toimingu sooritamiseksoperation.perform (allObjects, märksõna, objectName,objekti tüüp, väärtus);}@DataProvider (nimi = "hybridData")avalik objekt [] [] getDataFromDataprovider () viskab IOException {Objekt [] [] objekt = null;ReadGuru99ExcelFile fail = uus ReadGuru99ExcelFile ();// Loe märksõnade lehteLeht guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Leia Exceli failist ridade arvint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objekt = uus objekt [ridaKogus] [5];for (int i = 0; iKokkuvõte:
- Selenium WebDriveri abil saame luua kolme tüüpi testraamistikke.
- Need on Data Driven, Key Driven ja Hybrid testraamistik.
- Andmepõhise raamistiku saavutame TestNG andmeedastaja abil.
- Märksõnaga juhitud raamistikus on märksõnad kirjutatud mõnes välises failis, näiteks Exceli fail ja Java kood kutsub seda faili ja käivitab testjuhtumeid.
- Hübriidraamistik on segu märksõnadest ja andmetest lähtuvast raamistikust.
Laadige selles õpetuses alla Seleeni projektifailid demo jaoks