Selenium Automation Framework: Data Driven, Keyword Driven & Hybridní

Obsah:

Anonim

Co je to Selenium Framework?

Selen Framework je kód, struktura, která umožňuje údržbu kódu snadno a efektivně. Bez rámců mohou uživatelé umístit „kód“ a „data“ na stejné místo, které není ani opakovaně použitelné, ani čitelné. Rámečky přinášejí prospěšné výsledky, jako je zvýšená opakovaná použitelnost kódu, vyšší přenositelnost, nižší náklady na údržbu skriptu, lepší čitelnost kódu atd.

Existují hlavně tři typy rámců vytvořených nástrojem Selenium WebDriver k automatizaci manuálních testovacích případů

  • Rámec pro testování dat
  • Rámec pro testování klíčových slov
  • Hybridní testovací rámec

Rámec založený na datech v selenu

Data Driven Framework v selenu je metoda oddělení souborů dat od testovacího případu. Jakmile jsou datové sady odděleny od testovacího případu, lze je snadno upravit pro konkrétní funkce bez změny kódu. Používá se k načtení testovacích případů a sad z externích souborů, jako jsou Excel, .csv, .xml nebo některé databázové tabulky.

Chcete-li číst nebo psát Excel, Apache poskytuje velmi slavnou knihovnu POI. Tato knihovna je dostatečně schopná číst a zapisovat do formátu XLS i XLSX v Excelu.

Ke čtení souborů XLS poskytuje implementaci HSSF knihovna POI.

Pro čtení XLSX bude volbou implementace knihovny POI XSSF . Pojďme si tyto implementace podrobně prostudovat.

O testování na základě dat jsme se již dozvěděli v našem předchozím kurzu

Rámec poháněný klíčovým slovem v selenu

Framework řízený klíčovými slovy v selenu je metoda používaná k urychlení automatizovaného testování oddělením klíčových slov pro běžnou sadu funkcí a pokynů. Všechny operace a pokyny, které je třeba provést, jsou zapsány v nějakém externím souboru, jako je list aplikace Excel. Uživatelé mohou snadno ovládat a specifikovat funkce, které chtějí testovat.

Takto vypadá kompletní rámec

Jak vidíte, jedná se o 5krokový rámec. Pojďme si to podrobně prostudovat

Krok 1)

  • Skript ovladače Execute.java zavolá ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java má skript POI pro čtení dat z aplikace Excel

Krok 2)

  • ReadGuru99ExcelFile.java bude číst data z TestCase.xlsx
  • Takto vypadá list-
  • Podle klíčových slov zapsaných v souboru Excel bude rámec provádět operaci v uživatelském rozhraní.
  • Například musíme kliknout na tlačítko „Přihlásit se“. Odpovídajícím způsobem bude mít náš Excel klíčové slovo „Kliknout“. Nyní může mít AUT na stránce stovky tlačítek, aby bylo možné identifikovat tlačítko pro přihlášení, v aplikaci Excel zadáme název objektu jako loginButton & typ objektu jako název (viz zvýrazněný řádek na obrázku výše). Typ objektu může být Xpath, název CSS nebo jakákoli jiná hodnota

Krok 3) ReadGuru99ExcelFile.java předá tato data skriptu ovladače Execute.java

Krok 4)

  • Pro všechny naše webové prvky uživatelského rozhraní musíme vytvořit úložiště objektů, kam umístíme jejich lokátor prvků (jako Xpath, název, cesta CSS, název třídy atd.)
  • Execute.java (náš skript ovladače) přečte celé úložiště objektů a uloží jej do proměnné
  • Chcete-li si přečíst toto úložiště objektů, potřebujeme třídu ReadObject, která má metodu getObjectRepository k jejímu přečtení.

POZNÁMKA: Možná si myslíte, proč musíme vytvořit úložiště objektů. Odpověď pomáhá při údržbě kódu. Například používáme tlačítko s name = btnlogin v 10 různých testovacích případech. V budoucnu se vývojář rozhodne změnit název z btnlogin na odeslání. Ve všech 10 testovacích případech budete muset provést změnu. V případě úložiště objektů provedete změnu v úložišti pouze jednou.

Krok 5)

  • Ovladač předá data z aplikace Excel & Object Repository do třídy UIOperation
  • Třída UIOperation má funkce k provádění akcí odpovídajících klíčovým slovům, jako jsou CLICK, SETTEXT atd.… Zmíněným v aplikaci Excel
  • Třída UIOperation je třída Java, která má skutečnou implementaci kódu pro provádění operací s webovými prvky

Celý projekt bude vypadat jako -

Podívejme se na příklad:

Scénář testu

  • Provádíme 2 testovací případy
  • Testovací případ 1:
  • Přejít na http://demo.guru99.com/V4/
  • Zadejte ID uživatele
  • Zadejte heslo
  • Klikněte na Resetovat
  • Testovací případ 2:
  • Přejít na http://demo.guru99.com/V4/
  • Zadejte ID uživatele
  • Zadejte heslo
  • Klikněte na Přihlásit

object.properties

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

username = uid

heslo = heslo

title = barone

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

balíček excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovat org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;veřejná třída ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) throws IOException {// Vytvořte objekt třídy File a otevřete soubor xlsxSoubor file = new File (filePath + "\\" + fileName);// Vytvoří objekt třídy FileInputStream pro čtení souboru aplikace ExcelFileInputStream inputStream = nový FileInputStream (soubor);Workbook guru99Workbook = null;// Najděte příponu souboru rozdělením názvu souboru do podřetězce a získáním pouze názvu příponyŘetězec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Zkontrolujte podmínku, zda se jedná o soubor xlsxif (fileExtensionName.equals (". xlsx")) {// Pokud se jedná o soubor xlsx, vytvořte objekt třídy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Zkontrolujte stav, zda je soubor xlselse if (fileExtensionName.equals (". xls")) {// Pokud je to soubor xls, vytvořte objekt třídy XSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Číst list uvnitř sešitu podle jeho názvuList guru99Sheet = guru99Workbook.getSheet (název listu);vrátit guru99Sheet;}}

ReadObject.java

provozování balíku;import java.io.File;import java.io.FileInputStream;import java.io.IOException;importovat java.io.InputStream;importovat java.util.Properties;veřejná třída ReadObject {Vlastnosti p = nové Vlastnosti ();veřejné vlastnosti getObjectRepository () vyvolá IOException {// Číst soubor úložiště objektůStream InputStream = nový FileInputStream (nový soubor (System.getProperty ("user.dir") + "\\ src \\ objekty \\ object.properties"));// načte všechny objektyp.load (stream);návrat p;}}

UIOperation.java

provozování balíku;importovat java.util.Properties;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;veřejná třída UIOperation {Ovladač WebDriver;public UIOperation (ovladač WebDriver) {this.driver = driver;}public void perform (Properties p, String operation, String objectName, String objectType, String value) throws Exception {System.out.println ("");switch (operation.toUpperCase ()) {případ „KLIKNUTÍ“:// Provedení kliknutídriver.findElement (this.getObject (p, objectName, objectType)). click ();přestávka;případ „SETTEXT“:// Nastavit text na ovládací prvekdriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (value);přestávka;případ "GOTOURL":// Získejte adresu URL aplikacedriver.get (p.getProperty (hodnota));přestávka;případ „GETTEXT“:// Získat text prvkudriver.findElement (this.getObject (p, objectName, objectType)). getText ();přestávka;výchozí:přestávka;}}/ *** Najděte prvek BY pomocí typu a hodnoty objektu* @param str* @param objectName* @param objectType* @vrátit se* @hodí výjimku* /private By getObject (Vlastnosti p, String objectName, String objectType) vyvolá výjimku {// Najít podle xpathif (objectType.equalsIgnoreCase ("XPATH")) {návrat By.xpath (p.getProperty (objectName));}// najít podle třídyelse if (objectType.equalsIgnoreCase ("CLASSNAME")) {vrátit By.className (p.getProperty (objectName));}// najít podle jménaelse if (objectType.equalsIgnoreCase ("NAME")) {vrátit By.name (p.getProperty (objectName));}// Najít podle csselse if (objectType.equalsIgnoreCase ("CSS")) {návrat By.cssSelector (p.getProperty (objectName));}// najít podle odkazuelse if (objectType.equalsIgnoreCase ("LINK")) {návrat By.linkText (p.getProperty (název_objektu));}// najít částečným odkazemelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {návrat By.partialLinkText (p.getProperty (objectName));}jiný{vyvolá novou výjimku ("Chybný typ objektu");}}}

ExecuteTest.java

balíček testCases;importovat java.util.Properties;operace importu.ReadObject;operace importu.importovat org.apache.poi.ss.usermodel.Row;importovat 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;veřejná třída ExecuteTest {@Testpublic void testLogin () vyvolá výjimku {// TODO Automaticky generovaný útržek metodyWebDriver webdriver = nový FirefoxDriver ();Soubor ReadGuru99ExcelFile = nový soubor ReadGuru99ExcelFile ();Objekt ReadObject = nový ReadObject ();Vlastnosti allObjects = object.getObjectRepository ();UIOperation operation = new UIOperation (webdriver);// Přečtěte si list klíčových slovList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Najít počet řádků v souboru aplikace Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Vytvořte smyčku přes všechny řádky souboru aplikace Excel a přečtěte si jejpro (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

Po provedení bude výstup vypadat jako -

Stáhněte si soubory projektu Selenium pro ukázku v tomto výukovém programu

Hybridní rámec

Hybrid Framework in Selenium is a concept where we are using the advantage of both Keyword driven framework as well as Data driven framework. Jedná se o snadno použitelný rámec, který umožňuje manuálním testerům vytvářet testovací případy pouhým pohledem na klíčová slova, testovací data a úložiště objektů bez kódování v rámci.

Zde pro klíčová slova použijeme soubory Excel k udržení testovacích případů a pro testovací data můžeme použít data, poskytovatele Testng framework.

Tady v našem hybridním rámci nemusíme nic měnit v rámci řízeného klíčovým slovem, tady stačí nahradit soubor ExecuteTest.java souborem HybridExecuteTest.java.

Tento soubor HybridExecuteTest obsahuje veškerý kód pro klíčové slovo řízený konceptem poskytovatele dat.

Kompletní obrazové znázornění hybridního rámce bude vypadat

HybridExecuteTest.java

balíček testCases;import java.io.IOException;importovat java.util.Properties;operace importu.ReadObject;operace importu.importovat org.apache.poi.ss.usermodel.Row;importovat 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;veřejná třída HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String klíčové slovo, String objectName, String objectType, String value) vyvolá výjimku {// TODO Automaticky generovaný útržek metodyif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = nový FirefoxDriver ();}Objekt ReadObject = nový ReadObject ();Vlastnosti allObjects = object.getObjectRepository ();UIOperation operation = new UIOperation (webdriver);// Voláním funkce perform provedete operaci v uživatelském rozhraníoperation.perform (allObjects, keyword, objectName,objectType, value);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () vyvolá IOException {Object [] [] object = null;Soubor ReadGuru99ExcelFile = nový soubor ReadGuru99ExcelFile ();// Přečtěte si list klíčových slovList guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Najít počet řádků v souboru aplikace Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Souhrn:

  • Můžeme vytvořit tři typy testovacího rámce pomocí Selenium WebDriver.
  • Jedná se o testovací rámec založený na datech, klíčových slovech a hybridním testování.
  • Rámec založený na datech můžeme dosáhnout pomocí poskytovatele dat TestNG.
  • V rámci řízeného klíčovým slovem jsou klíčová slova napsána v některých externích souborech, jako je soubor aplikace Excel a kód java tento soubor zavolá a provede testovací případy.
  • Hybridní rámec je kombinací rámce řízeného klíčovými slovy a rámce řízeného daty.

Stáhněte si soubory projektu Selenium pro ukázku v tomto výukovém programu