Što je Selenium Framework?
Selen okvir je kod struktura koja omogućuje održavanje kod jednostavan i učinkovit. Bez okvira, korisnici mogu smjestiti "kod" i "podatke" na isto mjesto koje nije ni za više ni za čitanje. Okviri daju korisne ishode poput povećane ponovne upotrebljivosti koda, veće prenosivosti, smanjenih troškova održavanja skripti, bolje čitljivosti koda itd.
Postoje uglavnom tri vrste okvira koje je Selenium WebDriver stvorio za automatizaciju ručnih test slučajeva
- Okvir za ispitivanje vođen podacima
- Okvir za ispitivanje na temelju ključnih riječi
- Hibridni testni okvir
Okvir vođen podacima u selenu
Data Driven Framework u Seleniju metoda je odvajanja skupova podataka od test slučaja. Nakon što se skupovi podataka odvoje od testnog slučaja, mogu se lako prilagoditi za određenu funkcionalnost bez promjene koda. Koristi se za dohvaćanje test slučajeva i paketa iz vanjskih datoteka kao što su Excel, .csv, .xml ili neke tablice baze podataka.
Za čitanje ili pisanje Excela, Apache nudi vrlo poznate točke interesa u knjižnici. Ova je knjižnica dovoljno sposobna za čitanje i pisanje formata datoteka XLS i XLSX u programu Excel.
POI knjižnica omogućuje čitanje XLS datoteka, HSSF implementaciju.
Za čitanje XLSX-a odabir će biti implementacija XSSF- a POI biblioteke . Proučimo ove implementacije detaljno.
O testiranju na temelju podataka već smo saznali u našem prethodnom vodiču
Okvir vođen ključnim riječima u selenu
Okvir vođen ključnim riječima u selenu metoda je koja se koristi za ubrzavanje automatiziranog testiranja odvajanjem ključnih riječi za uobičajeni skup funkcija i uputa. Sve radnje i upute koje treba izvršiti napisane su u nekoj vanjskoj datoteci poput Excel lista. Korisnici mogu lako kontrolirati i odrediti funkcionalnosti koje žele testirati.
Evo kako izgleda kompletni okvir
Kao što vidite, riječ je o 5 koraka. Proučimo je detaljno
Korak 1)
- Skripta upravljačkog programa Execute.java pozvat će ReadGuru99ExcelFile.java
- ReadGuru99ExcelFile.java ima POI skriptu za čitanje podataka iz Excela
Korak 2)
- ReadGuru99ExcelFile.java će čitati podatke iz TestCase.xlsx
- Evo kako list izgleda-
- Prema ključnim riječima napisanim u Excelovoj datoteci, okvir će izvršiti operaciju na korisničkom sučelju.
- Na primjer, moramo kliknuti gumb "Prijava". Sukladno tome, naš će Excel imati ključnu riječ "Kliknite". Sada AUT može imati stotine gumba na stranici, kako bi identificirao gumb za prijavu, u Excel ćemo unijeti Ime objekta kao loginButton i tip objekta kao ime (pogledajte istaknuti redak na gornjoj slici). Vrsta objekta može biti Xpath, ime CSS ili bilo koja druga vrijednost
Korak 3) ReadGuru99ExcelFile.java proslijedit će ove podatke u skriptu pokretačkog programa Execute.java
Korak 4)
- Za sve naše web elemente korisničkog sučelja moramo stvoriti spremište objekata u koje ćemo smjestiti njihov lokator elemenata (poput Xpath, ime, CSS staza, naziv klase itd.)
- Execute.java (naša skripta upravljačkog programa) pročitati će čitavo Spremište objekata i pohraniti ga u varijablu
- Da bismo pročitali ovo spremište objekata, potrebna nam je klasa ReadObject koja ima metodu getObjectRepository za njegovo čitanje.
NAPOMENA: Možda mislite zašto trebamo stvoriti spremište objekata. Odgovor pomaže u održavanju koda. Na primjer, koristimo gumb s name = btnlogin u 10 različitih test slučajeva. U budućnosti programer odlučuje promijeniti ime iz btnlogin u poslati. Morat ćete unijeti promjenu u svih 10 testnih slučajeva. U slučaju spremišta objekata, promjenu ćete izvršiti samo jednom u spremištu.
Korak 5)
- Vozač će proslijediti podatke iz spremišta Excel & Object u klasu UIOperation
- Klasa UIOperation ima funkcije za izvođenje radnji koje odgovaraju ključnim riječima kao što su KLIK, SETTEKST itd. ... spomenute u excelu
- Klasa UIOperation je Java klasa koja ima stvarnu implementaciju koda za izvođenje operacija na web elementima
Kompletni projekt izgledat će kao-
Pogledajmo primjer:
Testni scenarij
- Izvršavamo 2 testna slučaja
- Testni slučaj 1:
- Idite na http://demo.guru99.com/V4/
- Unesite User ID
- Upišite lozinku
- Pritisnite Reset
- Testni slučaj 2:
- Idite na http://demo.guru99.com/V4/
- Unesite User ID
- Upišite lozinku
- Kliknite Prijava
objekt.svojstva
url = http: //demo.guru99.com/V4/
korisničko ime = uid
lozinka = lozinka
naslov = barone
loginButton = btnLogin
resetButton = btnReset
ReadGuru99ExcelFile.java
paket 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;javna klasa ReadGuru99ExcelFile {javni list readExcel (String filePath, String fileName, String sheetName) baca IOException {// Stvaranje objekta klase File za otvaranje xlsx datotekeDatoteka datoteke = nova datoteka (filePath + "\\" + fileName);// Stvorimo objekt klase FileInputStream za čitanje excel datotekeFileInputStream inputStream = novi FileInputStream (datoteka);Radna bilježnica guru99Workbook = null;// Pronađite ekstenziju datoteke dijeljenjem imena datoteke u substingu i dobivanjem samo imena ekstenzijeNiz fileExtensionName = fileName.substring (fileName.indexOf ("."));// Provjeri stanje je li datoteka xlsx datotekaif (fileExtensionName.equals (". xlsx")) {// Ako je datoteka xlsx, onda stvorite objekt klase XSSFWorkbookguru99Workbook = nova XSSFWorkbook (inputStream);}// Provjeri stanje je li datoteka xls datotekainače ako (fileExtensionName.equals (". xls")) {// Ako je datoteka xls, onda stvorite objekt klase XSSFWorkbookguru99Workbook = nova HSSFWorkbook (inputStream);}// Čitanje lista unutar radne knjige pod njegovim nazivomList guru99Sheet = guru99Workbook.getSheet (listName);return guru99Sheet;}}
ReadObject.java
rad paketa;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;javna klasa ReadObject {Svojstva p = nova svojstva ();javna svojstva getObjectRepository () baca IOException {// Čitanje datoteke spremišta objekataInputStream stream = novi FileInputStream (nova datoteka (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// učitavanje svih objekatap.load (tok);povratak p;}}
UIOperation.java
rad paketa;import java.util.Properties;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;javni razred UIOperation {Upravljački program za WebDriver;javni UIOperation (pokretački program WebDriver) {this.driver = upravljački program;}javna void izvedba (Svojstva p, Niz radnja, Niz ime objekta, String objektTip, vrijednost niza) baca Iznimka {System.out.println ("");prekidač (operation.toUpperCase ()) {slučaj "KLIK":// Izvršite klikdriver.findElement (this.getObject (p, objectName, objectType)). click ();pauza;slučaj "SETTEXT":// Postavljanje teksta na kontroludriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (vrijednost);pauza;slučaj "GOTOURL":// Dohvati url aplikacijedriver.get (p.getProperty (value));pauza;slučaj "GETTEXT":// Dobivanje teksta elementadriver.findElement (this.getObject (p, objectName, objectType)). getText ();pauza;zadano:pauza;}}/ *** Pronađite element pomoću tipa objekta i vrijednosti* @param str* @param objectName* @param objectType* @povratak* @throws Izuzetak* /private By getObject (Svojstva p, StringName objekta, String objectType) baca Iznimku {// Pronađi po xpathif (objectType.equalsIgnoreCase ("XPATH")) {vrati By.xpath (p.getProperty (objectName));}// pronađi po razreduinače ako (objectType.equalsIgnoreCase ("CLASSNAME")) {return By.className (p.getProperty (objectName));}// pronaći po imenuinače ako (objectType.equalsIgnoreCase ("NAME")) {vrati By.name (p.getProperty (objectName));}// Pronađi cssinače ako (objectType.equalsIgnoreCase ("CSS")) {vrati By.cssSelector (p.getProperty (objectName));}// pronađi vezominače ako (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (objectName));}// pronađi djelomičnom poveznicominače ako (objectType.equalsIgnoreCase ("PARTIALLINK")) {vrati By.partialLinkText (p.getProperty (objectName));}drugo{baciti novu iznimku ("Pogrešan tip objekta");}}}
ExecuteTest.java
paket testCases;import java.util.Properties;operacija uvoza.ReadObject;operacija uvoza.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;uvoz excelExportAndFileIO.ReadGuru99ExcelFile;javna klasa ExecuteTest {@Testpublic void testLogin () baca izuzetak {// TODO Automatski generirani kvar metodeWebDriver webdriver = novi FirefoxDriver ();ReadGuru99ExcelFile datoteka = nova datoteka ReadGuru99ExcelFile ();ReadObject objekt = novi ReadObject ();Svojstva allObjects = object.getObjectRepository ();UIOperation operacija = novi UIOperation (webdriver);// Čitanje lista ključnih riječiList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Pronađi broj redaka u excel datoteciint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Stvorite petlju preko svih redova datoteke excel da biste je pročitalifor (int i = 1; i" + row.getCell (0) .toString () + "Započeto");}}}}
Nakon izvršenja, izlaz će izgledati kao -
U ovom vodiču preuzmite datoteke projekta Selenium za demonstraciju
Hibridni okvir
Hibridni okvir u selenu koncept je u kojem koristimo prednost okvira vođenog ključnim riječima kao i okvira vođenog podacima. To je jednostavan okvir koji omogućuje ručnim testerima stvaranje test slučajeva samo gledanjem ključnih riječi, test podataka i spremišta objekata bez kodiranja u okviru.
Ovdje ćemo za ključne riječi koristiti Excel datoteke za održavanje test slučajeva, a za testne podatke možemo koristiti podatke, pružatelja Testng okvira.
Ovdje u našem hibridnom okviru ne trebamo ništa mijenjati u okviru koji se pokreće pomoću ključnih riječi, ovdje samo trebamo zamijeniti datoteku ExecuteTest.java datotekom HybridExecuteTest.java.
Ova datoteka HybridExecuteTest sadrži sav kôd za ključne riječi vođene konceptom davatelja podataka.
Izgledat će cjeloviti slikovni prikaz hibridnog okvira
HybridExecuteTest.java
paket testCases;import java.io.IOException;import java.util.Properties;operacija uvoza.ReadObject;operacija uvoza.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;uvoz excelExportAndFileIO.ReadGuru99ExcelFile;javna klasa HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (StringName slučaja, String ključna riječ, StringName objekta, String objectType, String vrijednost) baca Iznimku {// TODO Automatski generirani kvar metodeif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = novi FirefoxDriver ();}ReadObject objekt = novi ReadObject ();Svojstva allObjects = object.getObjectRepository ();UIOperation operacija = novi UIOperation (webdriver);// Poziv za izvođenje funkcije za izvođenje operacije na korisničkom sučeljuoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hibridni podaci")javni objekt [] [] getDataFromDataprovider () baca IOException {Objekt [] [] objekt = null;ReadGuru99ExcelFile datoteka = nova datoteka ReadGuru99ExcelFile ();// Čitanje lista ključnih riječiList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Pronađi broj redaka u excel datoteciint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objekt = novi Object [rowCount] [5];za (int i = 0; iSažetak:
- Pomoću Selenium WebDriver možemo stvoriti tri vrste testnog okvira.
- To su podatkovni okvir, vođen ključnim riječima i hibridni testni okvir.
- Okvir vođen podacima možemo postići pomoću pružatelja podataka tvrtke TestNG.
- U okviru usmjerenom prema ključnim riječima, ključne riječi su zapisane u nekim vanjskim datotekama poput excel datoteke, a java kôd pozvat će ovu datoteku i izvršiti test slučajeve.
- Hibridni okvir mješavina je okvira vođenog ključnim riječima i podatkovnog okvira.
U ovom vodiču preuzmite datoteke projekta Selenium za demonstraciju