Kas yra „Selenium Framework“?
„ Selenium Framework“ yra kodo struktūra, leidžianti kodo priežiūrą atlikti lengvai ir efektyviai. Be rėmelių vartotojai „kodą“ ir „duomenis“ gali įdėti į tą pačią vietą, kuri nėra nei pakartotinai naudojama, nei įskaitoma. Karkasai duoda naudingų rezultatų, tokių kaip padidėjęs kodo pakartotinis naudojimas, didesnis perkeliamumas, sumažintos scenarijaus priežiūros išlaidos, geresnis kodo įskaitomumas ir kt.
Daugiausia yra „Selenium WebDriver“ sukurtų trijų tipų karkasų, kad būtų galima automatizuoti bandymo atvejus
- „Data Driven Test Framework“
- Raktiniais žodžiais paremta bandymų sistema
- Hibridinių bandymų sistema
Duomenimis pagrįstas pagrindas selene
Duomenimis pagrįstas pagrindas selene yra duomenų rinkinių atskyrimo nuo bandymo atvejo metodas. Atskyrus duomenų rinkinius nuo bandomojo atvejo, juos galima lengvai modifikuoti pagal konkrečią funkciją, nekeičiant kodo. Jis naudojamas norint gauti bandomuosius atvejus ir rinkinius iš išorinių failų, tokių kaip „Excel“, .csv, .xml ar kai kurių duomenų bazių lentelių.
Norėdami skaityti ar rašyti „Excel“, „Apache“ pateikia labai žinomą bibliotekos LV. Ši biblioteka gali pakankamai nuskaityti ir parašyti tiek „ XLS“, tiek „ XLSX“ failų formatus „Excel“.
Norėdami skaityti XLS failus, HSSF įgyvendinimą teikia LV biblioteka.
Jei norite skaityti XLSX, bus pasirenkamas LV bibliotekos XSSF įgyvendinimas . Panagrinėkime šiuos įgyvendinimus išsamiai.
Mes jau sužinojome apie duomenų valdomą testavimą ankstesnėje mūsų pamokoje
Raktiniais žodžiais paremtas pagrindas selene
Raktinių žodžių sistema „Selenium“ yra metodas, naudojamas paspartinti automatizuotą bandymą, atskiriant raktinius žodžius bendram funkcijų ir instrukcijų rinkiniui. Visos operacijos ir instrukcijos, kurias reikia atlikti, yra įrašytos į kokį nors išorinį failą, kaip „Excel“ lapas. Vartotojai gali lengvai valdyti ir nurodyti funkcijas, kurias nori išbandyti.
Štai kaip atrodo visa sistema
Kaip matote, tai yra 5 žingsnių sistema. Panagrinėkime ją išsamiai
1 žingsnis)
- Tvarkyklės scenarijus „Execute.java“ iškvies „ReadGuru99ExcelFile.java“
- „ReadGuru99ExcelFile.java“ turi LV scenarijų duomenims iš „Excel“ nuskaityti
2 žingsnis)
- „ReadGuru99ExcelFile.java“ skaitys duomenis iš „TestCase.xlsx“
- Štai kaip lapas atrodo-
- Pagal raktinius žodžius, parašytus „Excel“ faile, sistema atliks operaciją vartotojo sąsajoje.
- Pavyzdžiui, turime spustelėti mygtuką „Prisijungti“. Atitinkamai mūsų „Excel“ turės raktinį žodį „Spustelėkite“. Dabar AUT gali turėti šimtus mygtukų puslapyje, kad būtų galima nustatyti prisijungimo mygtuką, „Excel“ įvesime objekto pavadinimą kaip prisijungimo mygtuką ir objekto tipą kaip pavadinimą (žr. Paryškintą eilutę aukščiau esančiame paveikslėlyje). Objekto tipas gali būti „Xpath“, pavadinimas CSS ar bet kokia kita reikšmė
3 žingsnis) ReadGuru99ExcelFile.java perduos šiuos duomenis tvarkyklės scenarijui Execute.java
4 žingsnis)
- Visiems mūsų vartotojo žiniatinklio elementams turime sukurti objektų saugyklą, kurioje įdėsime jų elementų lokatorių (pvz., „Xpath“, pavadinimą, CSS kelią, klasės pavadinimą ir kt.)
- „Execute.java“ (mūsų tvarkyklės scenarijus) perskaitys visą objektų saugyklą ir išsaugos ją kintamajame
- Norėdami perskaityti šią objektų saugyklą, mums reikia „ReadObject“ klasės, turinčios „getObjectRepository“ metodą, kad ją perskaitytumėte.
PASTABA: Galite pagalvoti, kodėl mes turime sukurti objektų saugyklą. Atsakymas padeda palaikyti kodą. Pavyzdžiui, mygtuką „name = btnlogin“ naudojame 10 skirtingų bandymų atvejų. Ateityje kūrėjas nusprendžia pakeisti pavadinimą iš btnlogin, kad jis būtų pateiktas. Turėsite pakeisti visus 10 bandymų atvejų. Objektų saugyklos atveju pakeitimus atliksite tik vieną kartą saugykloje.
5 žingsnis)
- Tvarkyklė perduos duomenis iš „Excel“ ir „Objektų saugyklos“ į „UIOperation“ klasę
- „UIOperation“ klasėje yra funkcijos atlikti veiksmus, atitinkančius raktinius žodžius, pvz., „CLICK“, „SETTEXT“ ir kt., Paminėtus „Excel“
- „UIOperation class“ yra „Java“ klasė, turinti faktinį kodo įgyvendinimą, kad būtų galima atlikti veiksmus su žiniatinklio elementais
Visas projektas atrodys
Panagrinėkime pavyzdį:
Testo scenarijus
- Atliekame 2 bandomuosius atvejus
- 1 bandymo atvejis:
- Eiti http://demo.guru99.com/V4/
- Įveskite vartotojo ID
- Įvesti slaptažodį
- Spustelėkite Reset
- 2 bandymo atvejis:
- Eiti http://demo.guru99.com/V4/
- Įveskite vartotojo ID
- Įvesti slaptažodį
- Spustelėkite Prisijungti
objektas.savybės
URL = http: //demo.guru99.com/V4/
vartotojo vardas = uid
slaptažodis = slaptažodis
pavadinimas = baronas
loginButton = btnLogin
resetButton = btnReset
„ReadGuru99ExcelFile.java“
paketas excelExportAndFileIO;importuoti java.io.File;importuoti java.io.FileInputStream;importuoti java.io.IOException;importuoti org.apache.poi.hssf.usermodel.HSSFWorkbook;importuoti org.apache.poi.ss.usermodel.Sheet;importuoti org.apache.poi.ss.usermodel.Workbook;importuoti org.apache.poi.xssf.usermodel.XSSFWorkbook;viešoji klasė „ReadGuru99ExcelFile“ {public Sheet readExcel (String filePath, String fileName, String sheetName) išmeta IOException {// Sukurkite failų klasės objektą, kad atidarytumėte xlsx failąFailo failas = naujas failas (filePath + "\\" + fileName);// Sukurkite „FileInputStream“ klasės objektą, kad galėtumėte skaityti „Excel“ failąFileInputStream inputStream = naujas FileInputStream (failas);Darbaknygė guru99Workbook = null;// Raskite failo plėtinį, padalydami failo pavadinimą į subsing ir gaudami tik plėtinio pavadinimąString fileExtensionName = failoVardas.substringas (failoVardas.indexOf ("."));// Patikrinkite sąlygą, jei failas yra xlsx failasjei (fileExtensionName.equals (". xlsx")) {// Jei tai yra xlsx failas, sukurkite XSSFWorkbook klasės objektąguru99Workbook = naujas XSSFWorkbook (inputStream);}// Patikrinkite sąlygą, jei failas yra xls failaselse if (fileExtensionName.equals (". xls")) {// Jei tai yra xls failas, sukurkite XSSFWorkbook klasės objektąguru99Workbook = naujas HSSFWorkbook (inputStream);}// Perskaitykite darbaknygės lapą pavadinimuLapas guru99Sheet = guru99Workbook.getSheet (sheetName);return guru99Sheet;}}
„ReadObject.java“
paketo valdymas;importuoti java.io.File;importuoti java.io.FileInputStream;importuoti java.io.IOException;importuoti java.io.InputStream;importuoti java.util.Nuosavybės;viešoji klasė „ReadObject“ {Ypatybės p = new Ypatybės ();viešosios ypatybės getObjectRepository () meta IOException {// Skaityti objekto saugyklos failą„InputStream“ srautas = naujas „FileInputStream“ (naujas failas (System.getProperty ("vartotojo.dir") + "\\ src \\ objektai \\ object.properties"));// įkelti visus objektusp. apkrova (srautas);grįžti p;}}
UIOperation.java
paketo valdymas;importuoti java.util.Nuosavybės;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;viešosios klasės UIOperation {„WebDriver“ tvarkyklė;viešoji „UIOperation“ („WebDriver“ tvarkyklė) {this.driver = tvarkyklė;}public void perform („Properties p“, „String“ operacija, „String objectName“, „String objectType“, „String value“) meta išimtį {System.out.println ("");jungiklis (operation.toUpperCase ()) {dėklas „CLICK“:// Atlikite paspaudimądriver.findElement (this.getObject (p, objectName, objectType)). spustelėkite ();pertrauka;dėklas „SETTEXT“:// Nustatykite tekstą valdymetvarkyklė.findElement (this.getObject (p, objectName, objectType)). sendKeys (reikšmė);pertrauka;dėklas „GOTOURL“:// Gauti programos URLdriver.get (p.getProperty (reikšmė));pertrauka;dėklas „GETTEXT“:// Gauti elemento tekstątvarkyklė.findElement (this.getObject (p, objectName, objectType)). getText ();pertrauka;numatytas:pertrauka;}}/ *** Raskite elementą BY naudodami objekto tipą ir vertę* @param p* @param objectName* @param objectType* @grįžti* @ throws išimtis* /privatus Pagal getObject (ypatybės p, String objectName, String objectType) išmeta išimtį {// Rasti pagal xpathif (objectType.equalsIgnoreCase ("XPATH")) {grąžinti By.xpath (p.getProperty (objectName));}// rasti pagal klaseselse if (objectType.equalsIgnoreCase ("CLASSNAME")) {grąžinti By.className (p.getProperty (objectName));}// rasti pagal vardąelse if (objectType.equalsIgnoreCase ("NAME")) {grąžinti By.name (p.getProperty (objectName));}// Raskite csselse if (objectType.equalsIgnoreCase ("CSS")) {grąžinti By.cssSelector (p.getProperty (objectName));}// rasti pagal nuorodąelse if (objectType.equalsIgnoreCase ("LINK")) {grąžinti By.linkText (p.getProperty (objectName));}// rasti daline nuorodaelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {grąžinti By.partialLinkText (p.getProperty (objectName));}Kitas{mesti naują išimtį („Neteisingas objekto tipas“);}}}
ExecuteTest.java
pakuotės testCases;importuoti java.util.Nuosavybės;importavimo operacija.ReadObject;importo operacija. UIOoperacija;importuoti org.apache.poi.ss.usermodel.Row;importuoti org.apache.poi.ss.usermodel.Sheet;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;importuoti „excelExportAndFileIO.ReadGuru99ExcelFile“;public class ExecuteTest {@Testpublic void testLogin () išmeta išimtį {// TODO Automatiškai sugeneruotas metodas„WebDriver webdriver“ = naujas „FirefoxDriver“ ();Failas „ReadGuru99ExcelFile“ = naujas „ReadGuru99ExcelFile“ ();ReadObject objektas = naujas ReadObject ();Ypatybės allObjects = object.getObjectRepository ();UIOperation operacija = nauja UIOperation (žiniatinklio tvarkyklė);// Perskaitykite raktinių žodžių lapąLapas guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Rasti eilučių skaičių „Excel“ faileint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Sukurkite kilpą visose „Excel“ failo eilutėse, kad ją perskaitytumėteuž (int i = 1; i" + eilutė.getCell (0) .toString () + "Pradėta");}}}}
Po vykdymo išvestis atrodys taip -
Šioje pamokoje atsisiųskite „Selenium“ projekto failus, skirtus demonstracijai
Hibridinė sistema
Hibridinis pagrindas selene yra koncepcija, kai mes naudojame tiek raktinių žodžių, tiek duomenų pagrindų pranašumus. Tai paprasta naudoti sistema, leidžianti rankiniams bandytojams sukurti bandomuosius atvejus, tiesiog žiūrint į raktinius žodžius, bandymų duomenis ir objektų saugyklą, nekoduojant sistemos.
Čia raktiniams žodžiams naudosime „Excel“ failus bandymų atvejams palaikyti, o bandymų duomenims - duomenis, „Testng“ pagrindo teikėją.
Čia, mūsų hibridinėje sistemoje, nereikia nieko keisti raktinių žodžių sistemoje, čia mes tiesiog turime pakeisti ExecuteTest.java failą HybridExecuteTest.java failu.
Šiame „HybridExecuteTest“ faile yra visas raktinių žodžių kodas, pagrįstas duomenų teikėjo koncepcija.
Atrodys visas vaizdinis hibridinės sistemos vaizdas
„HybridExecuteTest.java“
pakuotės testCases;importuoti java.io.IOException;importuoti java.util.Nuosavybės;importavimo operacija.ReadObject;importo operacija. UIOoperacija;importuoti org.apache.poi.ss.usermodel.Row;importuoti org.apache.poi.ss.usermodel.Sheet;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.DataProvider;importuoti org.testng.annotations.Test;importuoti „excelExportAndFileIO.ReadGuru99ExcelFile“;public class HybridExecuteTest {„WebDriver“ žiniatinklio tvarkyklė = nulis;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) meta išimtį {// TODO Automatiškai sugeneruotas metodasif (testcaseName! = null && testcaseName.length ()! = 0) {žiniatinklio tvarkyklė = new FirefoxDriver ();}ReadObject objektas = naujas ReadObject ();Ypatybės allObjects = object.getObjectRepository ();UIOperation operacija = nauja UIOperation (žiniatinklio tvarkyklė);// Skambučio funkcija, kad atliktumėte vartotojo sąsająoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (vardas = "hibridiniai duomenys")viešasis objektas [] [] getDataFromDataprovider () meta IOException {Object [] [] object = null;Failas „ReadGuru99ExcelFile“ = naujas „ReadGuru99ExcelFile“ ();// Perskaitykite raktinių žodžių lapąLapas guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Rasti eilučių skaičių „Excel“ faileint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objektas = naujas objektas [rowCount] [5];už (int i = 0; iSantrauka:
- Naudodami „Selenium WebDriver“ galime sukurti trijų tipų testavimo sistemą.
- Tai yra duomenų valdymas, raktinių žodžių valdymas ir hibridinių bandymų sistema.
- Duomenimis pagrįstą sistemą galime pasiekti naudodami „TestNG“ duomenų teikėją.
- Raktinių žodžių valdomoje sistemoje raktiniai žodžiai rašomi kai kuriuose išoriniuose failuose, pvz., „Excel“ faile, o „Java“ kodas iškvies šį failą ir vykdys bandymo atvejus.
- Hibridinė sistema yra raktinių žodžių ir duomenų pagrindų derinys.
Šioje pamokoje atsisiųskite „Selenium“ projekto failus, skirtus demonstracijai