Okvir za avtomatizacijo selena: na podlagi podatkov, ključnih besed & Hibridna

Kazalo:

Anonim

Kaj je okvir selena?

Okvir Selen je koda struktura, ki omogoča vzdrževanje koda enostavno in učinkovito. Brez ogrodja lahko uporabniki »kodo« in »podatke« postavijo na isto mesto, ki ni niti za večkratno uporabo niti za branje. Okviri prinašajo koristne rezultate, kot so večja ponovna uporabnost kode, večja prenosljivost, nižji stroški vzdrževanja skriptov, boljša berljivost kode itd.

Za avtomatizacijo ročnih testnih primerov je Selenium WebDriver ustvaril predvsem tri vrste okvirov

  • Data Driven Test Framework
  • Okvir za preskušanje na podlagi ključnih besed
  • Hibridni testni okvir

Podatkovni okvir v selenu

Data Driven Framework v programu Selenium je metoda ločevanja naborov podatkov od testnega primera. Ko so nabori podatkov ločeni od testnega primera, jih je mogoče enostavno spremeniti za določeno funkcionalnost, ne da bi spremenili kodo. Uporablja se za pridobivanje testnih primerov in paketov iz zunanjih datotek, kot so Excel, .csv, .xml ali nekatere tabele baz podatkov.

Za branje ali pisanje Excela ponuja Apache zelo znano knjižnico POI. Ta knjižnica je dovolj sposobna za branje in pisanje datotek XLS in XLSX v Excelu.

Za branje datotek XLS knjižnica POI zagotavlja izvedbo HSSF .

Za branje XLSX bo izbira izvedba knjižnice POI XSSF . Podrobno preučimo te izvedbe.

O preskušanju s podatki smo že izvedeli v prejšnji vadnici

Okvir, ki ga poganjajo ključne besede v selenu

Okvir za ključne besede v selenu je metoda, ki se uporablja za pospešitev samodejnega testiranja z ločevanjem ključnih besed za skupni nabor funkcij in navodil. Vsi postopki in navodila, ki jih je treba izvesti, so zapisani v neki zunanji datoteki, na primer v Excelovem listu. Uporabniki lahko enostavno nadzorujejo in določajo funkcije, ki jih želijo preizkusiti.

Tukaj je videti celoten okvir

Kot lahko vidite, gre za 5-stopenjski okvir. Podrobno ga preučimo

Korak 1)

  • Gonilniški skript Execute.java bo poklical ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java ima POI skript za branje podatkov iz Excela

2. korak)

  • ReadGuru99ExcelFile.java bo prebral podatke iz TestCase.xlsx
  • Tukaj je videti list -
  • Glede na ključne besede, zapisane v Excelovi datoteki, bo ogrodje izvajalo operacijo v uporabniškem vmesniku.
  • Na primer, moramo klikniti gumb »Prijava«. Ustrezno bo naš Excel imel ključno besedo »klik«. Zdaj ima lahko AUT na strani na stotine gumbov, da identificira gumb za prijavo, v Excelu bomo kot ime vnesli Ime predmeta kot gumb Gumb in vrsto predmeta (glej označeno vrstico na zgornji sliki). Vrsta predmeta je lahko Xpath, ime CSS ali katera koli druga vrednost

Korak 3) ReadGuru99ExcelFile.java bo te podatke posredoval gonilniškemu skriptu Execute.java

4. korak)

  • Za vse naše spletne elemente uporabniškega vmesnika moramo ustvariti repozitorij predmetov, kamor bomo postavili njihov lokator elementov (kot so Xpath, ime, pot CSS, ime razreda itd.)
  • Execute.java (naš gonilniški skript) bo prebral celotno skladišče objektov in ga shranil v spremenljivko
  • Za branje tega repozitorija objektov potrebujemo razred ReadObject, ki ima metodo getObjectRepository za branje.

OPOMBA: Morda pomislite, zakaj moramo ustvariti repozitorij predmetov. Odgovor pomaga pri vzdrževanju kode. Na primer, uporabimo gumb z imenom = btnlogin v 10 različnih testnih primerih. V prihodnosti se razvijalec odloči, da bo ime spremenil iz btnlogin v oddajo. Morali boste spremeniti vseh 10 testnih primerov. V primeru skladišča predmetov boste spremembo izvedli samo enkrat v skladišču.

5. korak)

  • Gonilnik bo podatke iz zbirke Excel & Object Repository posredoval razredu UIOperation
  • Razred UIOperation ima funkcije za izvajanje dejanj, ki ustrezajo ključnim besedam, kot so KLIK, SETTEXT itd ... omenjene v excelu
  • Razred UIOperation je razred Java, ki ima dejansko izvedbo kode za izvajanje operacij na spletnih elementih

Celoten projekt bo videti kot-

Poglejmo si primer:

Preskusni scenarij

  • Izvajamo 2 testna primera
  • Testni primer 1:
  • Pojdi na http://demo.guru99.com/V4/
  • Vnesite ID uporabnika
  • Vnesite geslo
  • Kliknite Ponastavi
  • Testni primer 2:
  • Pojdi na http://demo.guru99.com/V4/
  • Vnesite ID uporabnika
  • Vnesite geslo
  • Kliknite Prijava

object.properties

url = http: //demo.guru99.com/V4/

uporabniško ime = uid

geslo = geslo

naslov = barone

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

paket excelExportAndFileIO;import java.io.File;uvoz 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;javni razred ReadGuru99ExcelFile {javni list readExcel (String filePath, String fileName, String sheetName) vrže IOException {// Ustvari objekt razreda File, da odpre datoteko xlsxDatoteka datoteke = nova datoteka (filePath + "\\" + fileName);// Ustvari objekt razreda FileInputStream za branje datoteke excelFileInputStream inputStream = nov FileInputStream (datoteka);Delovni zvezek guru99Workbook = null;// Poiščite končnico datoteke tako, da razdelite ime datoteke v podnapisu in dobite samo ime končniceNiz fileExtensionName = fileName.substring (fileName.indexOf ("."));// Preverite stanje, če je datoteka xlsxif (fileExtensionName.equals (". xlsx")) {// Če gre za datoteko xlsx, potem ustvarite objekt razreda XSSFWorkbookguru99Workbook = nova XSSFWorkbook (inputStream);}// Preveri stanje, če je datoteka xlssicer če (fileExtensionName.equals (". xls")) {// Če gre za datoteko xls, potem ustvarite objekt razreda XSSFWorkbookguru99Workbook = nova HSSFWorkbook (inputStream);}// Branje lista v delovnem zvezku po njegovem imenuList guru99Sheet = guru99Workbook.getSheet (sheetName);return guru99Sheet;}}

ReadObject.java

paketno delovanje;import java.io.File;uvoz java.io.FileInputStream;import java.io.IOException;uvoz java.io.InputStream;uvoz java.util.Properties;javni razred ReadObject {Lastnosti p = nove lastnosti ();javne lastnosti getObjectRepository () vrže IOException {// Branje datoteke repozitorija objektaInputStream stream = new FileInputStream (nova datoteka (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// naloži vse predmetep.load (tok);vrnitev p;}}

UIOperation.java

paketno delovanje;uvoz java.util.Properties;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;javni razred UIOperation {Gonilnik WebDriver;javni UIOperation (gonilnik WebDriver) {this.driver = voznik;}javno void izvedba (Lastnosti p, Niz operacija, String objectName, String objectType, String vrednost) vrže izjemo {System.out.println ("");stikalo (operation.toUpperCase ()) {primer "KLIK":// Izvedite klikdriver.findElement (this.getObject (p, objectName, objectType)). click ();odmor;primer "SETTEXT":// Nastavitev besedila na nadzordriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (vrednost);odmor;primer "GOTOURL":// Pridobite url aplikacijedriver.get (p.getProperty (value));odmor;primer "GETTEXT":// Pridobi besedilo elementadriver.findElement (this.getObject (p, objectName, objectType)). getText ();odmor;privzeto:odmor;}}/ *** Poišči element BY z uporabo predmeta in vrednosti* @param str* @param objectName* @param objectType* @ vrni se* @throws Izjema* /private Po getObject (Lastnosti p, String objectName, String objectType) vrže izjemo {// Najdi po xpathif (objectType.equalsIgnoreCase ("XPATH")) {vrni By.xpath (p.getProperty (objectName));}// najdi po razredusicer če (objectType.equalsIgnoreCase ("CLASSNAME")) {vrni By.className (p.getProperty (objectName));}// najti po imenusicer če (objectType.equalsIgnoreCase ("NAME")) {vrni By.name (p.getProperty (objectName));}// Najdi po csssicer če (objectType.equalsIgnoreCase ("CSS")) {vrni By.cssSelector (p.getProperty (objectName));}// poišči po povezavisicer če (objectType.equalsIgnoreCase ("POVEZAVA")) {vrni By.linkText (p.getProperty (objectName));}// po delni povezavisicer če (objectType.equalsIgnoreCase ("PARTIALLINK")) {vrni By.partialLinkText (p.getProperty (objectName));} drugače{vrzi novo izjemo ("Napačna vrsta predmeta");}}}

ExecuteTest.java

paket testCases;uvoz java.util.Properties;operacija uvoza.ReadObject;operacija uvoza.UIOperation;uvoz 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;javni razred ExecuteTest {@Testpublic void testLogin () vrže izjemo {// TODO Samodejno ustvarjena škrbina metodeWebDriver webdriver = novi FirefoxDriver ();Datoteka ReadGuru99ExcelFile = nova datoteka ReadGuru99ExcelFile ();Objekt ReadObject = nov ReadObject ();Lastnosti allObjects = object.getObjectRepository ();Operacija UIOperation = nova UIOperation (spletni pogon);// Branje lista s ključnimi besedamiList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Poiščite število vrstic v datoteki excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Ustvari zanko nad vsemi vrsticami datoteke excel, da jo preberešfor (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

Po izvedbi bo izhod videti tako -

V tej vadnici prenesite datoteke za projekt Selenium za predstavitev

Hibridni okvir

Hibridni okvir v selenu je koncept, pri katerem uporabljamo prednosti ogrodja, ki temelji na ključnih besedah, in okvira, ki temelji na podatkih. To je enostaven za uporabo okvir, ki ročnim preizkuševalcem omogoča, da ustvarijo testne primere, tako da samo pogledajo ključne besede, preskusne podatke in skladišče predmetov brez kodiranja v ogrodju.

Tu bomo za ključne besede uporabili datoteke Excel za vzdrževanje testnih primerov, za testne podatke pa podatke, ponudnika ogrodja Testng.

Tukaj v našem hibridnem okviru nam ni treba ničesar spreminjati v ogrodju, ki ga poganjajo ključne besede, tukaj moramo le nadomestiti datoteko ExecuteTest.java z datoteko HybridExecuteTest.java.

Ta datoteka HybridExecuteTest vsebuje vso kodo za ključne besede, ki temeljijo na konceptu ponudnika podatkov.

Videti bo celotna slikovna predstavitev hibridnega ogrodja

HybridExecuteTest.java

paket testCases;import java.io.IOException;uvoz java.util.Properties;operacija uvoza.ReadObject;operacija uvoza.UIOperation;uvoz 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;javni razred HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) vrže izjemo {// TODO Samodejno ustvarjena škrbina metodeif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = novi FirefoxDriver ();}Objekt ReadObject = nov ReadObject ();Lastnosti allObjects = object.getObjectRepository ();Operacija UIOperation = nova UIOperation (spletni pogon);// Klicanje funkcije za izvajanje operacij na uporabniškem vmesnikuoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () vrže IOException {Objekt [] [] object = null;Datoteka ReadGuru99ExcelFile = nova datoteka ReadGuru99ExcelFile ();// Branje lista s ključnimi besedamiList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Poiščite število vrstic v datoteki excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Povzetek:

  • Z uporabo programa Selenium WebDriver lahko ustvarimo tri vrste testnega ogrodja.
  • To so podatkovni pogoni, ključne besede in hibridni testni okvir.
  • Podatkovno usmerjen okvir lahko dosežemo s pomočjo ponudnika podatkov TestNG.
  • V okviru, ki temelji na ključnih besedah, so ključne besede zapisane v nekaterih zunanjih datotekah, kot je datoteka excel, koda Java pa bo poklicala to datoteko in izvedla testne primere.
  • Hibridni okvir je mešanica ključnih besed in podatkovnega okolja.

V tej vadnici prenesite datoteke za projekt Selenium za predstavitev