Rámec automatizácie selénu: riadený údajmi, riadený kľúčovými slovami & Hybrid

Obsah:

Anonim

Čo je selénový rámec?

Selén Framework je kód, štruktúra, ktorá umožňuje údržbu kódu ľahko a efektívne. Bez rámcov môžu používatelia umiestňovať „kód“ a „údaje“ na rovnaké miesto, ktoré nie je možné opakovane ani prečítať. Rámec prináša prospešné výsledky, ako je zvýšená opätovná použiteľnosť kódu, vyššia prenosnosť, nižšie náklady na údržbu skriptu, lepšia čitateľnosť kódu atď.

Selenium WebDriver vytvára hlavne tri typy rámcov na automatizáciu manuálnych testovacích prípadov

  • Rámec testovania na základe údajov
  • Rámec skúšok riadených kľúčovými slovami
  • Hybridný testovací rámec

Rámec riadený údajmi na seléne

Data Driven Framework v seléne je metóda oddelenia súborov dát od testovacieho prípadu. Po oddelení súborov údajov od testovacieho prípadu je možné ich ľahko upraviť pre konkrétnu funkčnosť bez zmeny kódu. Používa sa na načítanie testovacích prípadov a balíkov z externých súborov, ako sú Excel, .csv, .xml alebo niektoré databázové tabuľky.

Na čítanie alebo zápis do Excelu poskytuje Apache veľmi slávny BZ knižnice. Táto knižnica je schopná čítať a zapisovať súbory vo formáte XLS aj XLSX v programe Excel.

Na načítanie súborov XLS poskytuje knižnica POI implementáciu HSSF .

Pri čítaní XLSX bude voľbou implementácia knižnice POI pomocou XSSF . Poďme si tieto implementácie podrobne preštudovať.

O testovaní na základe dát sme sa už dozvedeli v našom predchádzajúcom tutoriáli

Rámec riadený kľúčovým slovom na seléne

Framework riadený kľúčovými slovami v seléne je metóda používaná na urýchlenie automatizovaného testovania oddelením kľúčových slov od bežnej sady funkcií a pokynov. Všetky operácie a pokyny, ktoré sa majú vykonať, sú napísané v nejakom externom súbore, ako napríklad hárok programu Excel. Používatelia môžu ľahko ovládať a určovať funkcie, ktoré chcú testovať.

Takto vyzerá kompletný rámec

Ako vidíte, jedná sa o 5 krokový rámec. Poďme si to podrobne preštudovať

Krok 1)

  • Skript ovládača Execute.java zavolá ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java má skript POI na čítanie údajov z programu Excel

Krok 2)

  • ReadGuru99ExcelFile.java bude čítať údaje z TestCase.xlsx
  • Takto vyzerá hárok -
  • Podľa kľúčových slov napísaných v súbore programu Excel rámec vykoná operáciu v používateľskom rozhraní.
  • Napríklad musíme kliknúť na tlačidlo „Prihlásiť sa“. Zodpovedajúcim spôsobom bude mať náš program Excel kľúčové slovo „Kliknúť“. Teraz môže mať AUT na stránke stovky tlačidiel, ktoré slúžia na identifikáciu tlačidla Prihlásiť. V programe Excel zadáme Názov objektu ako loginButton & typ objektu ako názov (pozri zvýraznený riadok na obrázku vyššie). Typ objektu môže byť Xpath, názov CSS alebo iná hodnota

Krok 3) ReadGuru99ExcelFile.java odovzdá tieto údaje skriptu ovládača Execute.java

Krok 4)

  • Pre všetky naše webové prvky používateľského rozhrania musíme vytvoriť úložisko objektov, do ktorého umiestnime ich vyhľadávač prvkov (napríklad Xpath, názov, cesta CSS, názov triedy atď.)
  • Execute.java (náš skript ovládača) prečíta celé úložisko objektov a uloží ho do premennej
  • Na čítanie tohto úložiska objektov potrebujeme triedu ReadObject, ktorá má na jej čítanie metódu getObjectRepository.

POZNÁMKA: Možno si myslíte, prečo musíme vytvoriť úložisko objektov. Odpoveď pomáha pri údržbe kódu. Napríklad tlačidlo s menom = btnlogin používame v 10 rôznych testovacích prípadoch. V budúcnosti sa vývojár rozhodne zmeniť názov z btnlogin na odoslanie. Vo všetkých 10 testovacích prípadoch budete musieť urobiť zmenu. V prípade úložiska objektov urobíte zmenu v úložisku iba raz.

Krok 5)

  • Ovládač odovzdá údaje z programu Excel & Object Repository do triedy UIOperation
  • Trieda UIOperation má funkcie na vykonávanie akcií zodpovedajúcich kľúčovým slovám ako CLICK, SETTEXT atď ... uvedeným v programe Excel
  • Trieda UIOperation je trieda Java, ktorá má skutočnú implementáciu kódu na vykonávanie operácií s webovými prvkami

Celý projekt bude vyzerať ako -

Pozrime sa na príklad:

Scenár testu

  • Vykonávame 2 testovacie prípady
  • Testovací prípad 1:
  • Choďte http://demo.guru99.com/V4/
  • Zadajte ID používateľa
  • Zadajte heslo
  • Kliknite na Obnoviť
  • Testovací prípad 2:
  • Choďte http://demo.guru99.com/V4/
  • Zadajte ID používateľa
  • Zadajte heslo
  • Kliknite na Prihlásiť sa

objekt.vlastnosti

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

username = uid

heslo = heslo

titul = barón

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

balík excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovať org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;verejná trieda ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) throws IOException {// Vytvorte objekt triedy File a otvorte súbor xlsxFile file = new File (filePath + "\\" + fileName);// Vytvorenie objektu triedy FileInputStream na čítanie súboru programu ExcelFileInputStream inputStream = nový FileInputStream (súbor);Workbook guru99Workbook = null;// Vyhľadajte príponu súboru tak, že rozdelíte názov súboru do podreťazca a získate iba názov príponyReťazec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Skontrolujte stav, či je súbor xlsxif (fileExtensionName.equals (". xlsx")) {// Ak je to súbor xlsx, potom vytvoríme objekt triedy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Skontrolujte stav, či je súbor xlselse if (fileExtensionName.equals (". xls")) {// Ak je to súbor xls, potom vytvoríme objekt triedy XSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Prečítajte si hárok v zošite podľa jeho názvuList guru99Sheet = guru99Workbook.getSheet (názov listu);návrat guru99Sheet;}}

ReadObject.java

prevádzka balíka;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;verejná trieda ReadObject {Vlastnosti p = nové Vlastnosti ();public Properties getObjectRepository () hodí IOException {// Čítanie súboru úložiska objektovStream InputStream = nový FileInputStream (nový súbor (System.getProperty ("user.dir") + "\\ src \\ objekty \\ object.properties"));// načíta všetky objektyp.load (prúd);návrat p;}}

UIOperation.java

prevádzka balíka;import java.util.Properties;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;verejná trieda UIOperácia {Ovládač WebDriver;public UIOperation (ovládač WebDriver) {this.driver = vodič;}public void perform (Properties p, String operation, String objectName, String objectType, String value) vyvolá výnimku {System.out.println ("");switch (operation.toUpperCase ()) {prípad „KLIKNUTIE“:// Vykonajte kliknutiedriver.findElement (this.getObject (p, objectName, objectType)). click ();prestávka;prípad „SETTEXT“:// Nastaviť text na kontroludriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (hodnota);prestávka;prípad „GOTOURL“:// Získajte adresu URL aplikáciedriver.get (p.getProperty (hodnota));prestávka;prípad „GETTEXT“:// Získanie textu prvkudriver.findElement (this.getObject (p, objectName, objectType)). getText ();prestávka;predvolené:prestávka;}}/ *** Vyhľadajte prvok BY pomocou typu a hodnoty objektu* @param p* @param objectName* @param objectType* @ návrat* @hodí výnimku* /private By getObject (Vlastnosti p, String objectName, String objectType) vyvolá Výnimku {// Nájsť podľa xpathif (objectType.equalsIgnoreCase ("XPATH")) {návrat By.xpath (p.getProperty (objectName));}// nájsť podľa triedyelse if (objectType.equalsIgnoreCase ("CLASSNAME")) {návrat By.className (p.getProperty (objectName));}// nájsť podľa menaelse if (objectType.equalsIgnoreCase ("NAME")) {návrat By.name (p.getProperty (objectName));}// Nájsť podľa csselse if (objectType.equalsIgnoreCase ("CSS")) {návrat By.cssSelector (p.getProperty (objectName));}// nájsť podľa odkazuelse if (objectType.equalsIgnoreCase ("LINK")) {návrat By.linkText (p.getProperty (objectName));}// nájsť pomocou čiastočného odkazuelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {návrat By.partialLinkText (p.getProperty (objectName));} iné{vyvolať novú výnimku ("nesprávny typ objektu");}}}

ExecuteTest.java

balíček testCases;import java.util.Properties;operácia importu.ReadObject;operácia importu.UIOpráca;importovať org.apache.poi.ss.usermodel.Row;importovať org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;verejná trieda ExecuteTest {@Testpublic void testLogin () vyvolá výnimku {// TODO Automaticky generovaný pahýl metódyWebDriver webdriver = nový FirefoxDriver ();Súbor ReadGuru99ExcelFile = nový ReadGuru99ExcelFile ();Objekt ReadObject = nový ReadObject ();Vlastnosti allObjects = object.getObjectRepository ();Operácia UIOperation = nová UIOperation (webdriver);// Prečítajte si hárok s kľúčovými slovamiHárok guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Nájde počet riadkov v súbore programu Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Vytvorte slučku cez všetky riadky excelového súboru, aby ste si ju prečítalipre (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

Po vykonaní bude výstup vyzerať ako -

Stiahnite si súbory projektu Selenium pre ukážku v tomto výučbe

Hybridný rámec

Hybridný rámec na seléne je koncept, pri ktorom využívame výhody rámca riadeného kľúčovými slovami aj rámca riadeného dátami. Jedná sa o ľahko použiteľný rámec, ktorý umožňuje manuálnym testerom vytvárať testovacie prípady iba pri pohľade na kľúčové slová, testovacie údaje a úložisko objektov bez nutnosti kódovania v rámci.

Tu pre kľúčové slová použijeme súbory Excel na údržbu testovacích prípadov a pre testovacie dáta môžeme použiť dáta, poskytovateľa testovacieho rámca.

Tu v našom hybridnom rámci nemusíme nič meniť v rámci riadenom kľúčovými slovami, tu stačí nahradiť súbor ExecuteTest.java súborom HybridExecuteTest.java.

Tento súbor HybridExecuteTest má všetok kód pre kľúčové slovo riadený konceptom poskytovateľa údajov.

Kompletné obrazové znázornenie hybridného rámca bude vyzerať

HybridExecuteTest.java

balíček testCases;import java.io.IOException;import java.util.Properties;operácia importu.ReadObject;operácia importu.UIOpráca;importovať org.apache.poi.ss.usermodel.Row;importovať 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;import excelExportAndFileIO.ReadGuru99ExcelFile;verejná trieda HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (reťazec testcaseName, kľúčové slovo reťazca, reťazec objectName, reťazec objectType, hodnota reťazca) vyvolá výnimku {// TODO Automaticky generovaný pahýl metódyif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = nový FirefoxDriver ();}Objekt ReadObject = nový ReadObject ();Vlastnosti allObjects = object.getObjectRepository ();Operácia UIOperation = nová UIOperation (webdriver);// Zavolajte funkciu perform na vykonanie operácie v UIoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () vyvolá IOException {Objekt [] [] objekt = null;Súbor ReadGuru99ExcelFile = nový ReadGuru99ExcelFile ();// Prečítajte si hárok s kľúčovými slovamiHárok guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Nájde počet riadkov v súbore programu Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];pre (int i = 0; i 

Zhrnutie:

  • Pomocou Selenium WebDriver môžeme vytvoriť tri typy testovacieho rámca.
  • Jedná sa o testovací rámec založený na dátach, kľúčových slovách a hybridnom testovaní.
  • Rámec založený na dátach môžeme dosiahnuť pomocou poskytovateľa údajov spoločnosti TestNG.
  • V rámci riadenom kľúčovými slovami sú kľúčové slová napísané v niektorých externých súboroch, ako je napríklad súbor Excel, a kód java tento súbor zavolá a vykoná testovacie prípady.
  • Hybridný rámec je kombináciou rámca riadeného kľúčovými slovami a dátami.

Stiahnite si súbory projektu Selenium pre ukážku v tomto výučbe