keyword driven framework selenium with examples
Tento obsáhlý výukový program o rámcích poháněných klíčovými slovy vysvětluje různé součásti rámce a jak jej vytvořit v selenu:
Obecně platí, že Framework je soubor pokynů, které, pokud budou dodrženy, přinesou prospěšné výsledky.
Rámec řízený klíčovým slovem je technika externalizace klíčových slov / akcí, které se používají ve skriptu v samostatném úložišti objektů (zde se jedná o soubor třídy Java), což přinese pozitivní výsledky, jako je zvýšená opakovaná použitelnost kódu, snížená údržba skriptu a vyšší přenositelnost.
=> Prohlédněte si průvodce pro začátečníky selenem zde.
Co se naučíte:
Co je rámec řízený klíčovými slovy v selenu?
Zde jsou videonávody:
Rámec řízený klíčovými slovy - plán a design
Vytvoření části rámce poháněného klíčovým slovem - I
Vytvoření části rámce poháněného klíčovým slovem - II
Součásti rámce pro testování klíčových slov
Níže je uveden seznam komponent, které jsou součástí Framework Driven Framework.
- Knihovna funkcí
- Excel list pro uložení klíčových slov
- Šablona návrhu testovacího případu
- Úložiště objektů pro prvky / lokátory
- Testovací skripty nebo skript ovladače
# 1) Knihovna funkcí
Toto je obvykle soubor třídy Java, kde jsou definována klíčová slova. Jinými slovy, všechny akce prováděné v aplikaci jsou definovány jako uživatelem definované metody (což jsou klíčová slova) v souboru třídy knihovny.
Například:
Předpokládejme, že naše aplikace musí provést následující akce v jednom nebo více testovacích případech:
- Zadejte URL.
- Klikněte na prvek.
- Zadejte textové pole.
Pak, soubor knihovny je vytvořen definováním jednotlivých metod pro všechny tyto akce, jak je uvedeno níže:
Zde vytváříme uživatelem definovanou metodu akce - „Zadejte adresu URL“.
Název poskytovaný pro metodu definovanou uživatelem se nazývá a Klíčové slovo.
Zde je tedy „enter_URL“ klíčové slovo
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parametry :
Řidič - Řidič je inicializován v hlavní třídě a je zde předán.
Testovací data - je čten z externího zdroje hlavní třídou a předán sem.
Funkce :
Tady, driver.get () - je funkce selenu, který provádí akci „zadejte URL“.
Keywords.java
package Keywords.Defined; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; // driver object is declared //method for entering URL – Keyword is ‘enter_URL’ public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); } //method for typing action – Keyword is ‘type’ public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) { driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); } //method for click action – Keyword is ‘click’ public void click(WebDriver driver,String ObjectName, String locatorType) { driver.findElement(this.getObject(ObjectName,locatorType)).click(); } }
# 2) List aplikace Excel pro ukládání klíčových slov
Všechny uživatelem definované metody spolu s podrobnostmi o jejich funkcích by měly být zmíněny v listu aplikace Excel, aby uživatel mohl pochopit, jaké klíčové slovo obsahuje soubor knihovny.
List aplikace Excel funguje jako souhrn pro soubor knihovny a je užitečný při vytváření šablony testovacího případu, kde se uživatel podívá na seznam klíčových slov listu aplikace Excel a vybere odpovídající klíčové slovo pro každou akci v testovacím případě.
Například:
package Keywords.Defined; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; public void enter_URL(WebDriver driver,String TestData) throws IOException{ driver.get(TestData); } public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); //driver.findElement(By.xpath('//')).sendKeys(testdata); } public void wait(WebDriver driver,String ObjectName, String locatorType) throws IOException{ WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.visibilityOf(driver.findElement(this.getObject(ObjectName,locatorType)))); } public void click(WebDriver driver,String ObjectName, String locatorType) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).click(); } public String get_currentURL(WebDriver driver){ String URL = driver.getCurrentUrl(); System.out.println('print URL '+URL); return URL; } By getObject(String ObjectName, String locatorType) throws IOException{ File file = new File(path+'\Externals\Object Repository.properties'); FileInputStream fileInput = new FileInputStream(file); Properties prop = new Properties(); //find by xpath if(locatorType.equalsIgnoreCase('XPATH')){ return By.xpath(prop.getProperty(ObjectName)); } //find by class else if(locatorType.equalsIgnoreCase('CLASSNAME')){ return By.className(prop.getProperty(ObjectName)); } //find by name else if(locatorType.equalsIgnoreCase('NAME')){ return By.name(prop.getProperty(ObjectName)); } //Find by css else if(locatorType.equalsIgnoreCase('CSS')){ return By.cssSelector(prop.getProperty(ObjectName)); } //find by link else if(locatorType.equalsIgnoreCase('LINK')){ return By.linkText(prop.getProperty(ObjectName)); } //find by partial link else if(locatorType.equalsIgnoreCase('PARTIALLINK')){ return By.partialLinkText(prop.getProperty(ObjectName)); } return null; } }
# 3) Navrhněte šablonu testovacího případu
Šablonu testovacího případu lze vytvořit podle pohodlí projektu. Neexistuje žádné zvláštní pravidlo pro vytvoření šablony. Je navržen v závislosti na tom, nakolik projekt potřebuje rámec k externalizaci. Externalizace může být pouze pro klíčová slova, nebo se někdy externalizují i testovací data a prvky uživatelského rozhraní.
Je vytvořena vzorová šablona testovacího případu:
V uvedeném příkladu je šablona vytvořena takovým způsobem, že:
- Každý list odpovídá testovacímu případu a poslední list je ten, který obsahuje „seznam klíčových slov“.
- Každý řádek odpovídá testovacím krokům TC.
- Každý sloupec je parametry, které jsou nezbytné pro každou akci.
Jak vyplnit šablonu testovacího případu:
# 1) Z poskytnutého listu testovacích případů si přečtěte každý testovací případ a jeho příslušné kroky testu. U každého kroku testu vyhledejte akci a vyhledejte odpovídající klíčové slovo ze souboru knihovny.
#dva) Jakmile je akce spojena s klíčovým slovem, vyplňte šablonu testovacího případu v pořadí testovacích případů a podle potřeby předejte také další požadované parametry.
# 4) Objektové úložiště pro lokátory
Lokátor uživatelského rozhraní lze identifikovat a jeho hodnotu lze buď zmínit v šabloně testovacího případu, nebo udržovat v samostatném úložišti objektů.
V níže uvedeném příkladu vlastnosti identifikace prvku
- Typ lokátoru - Použitá identifikační technika je id, Xpath, ClassName atd.
- Hodnota lokátoru - Hodnota tohoto atributu - Například: Pokud je jeho atribut Id, pak hodnota id a tak dále.
Dalším způsobem je udržovat v úložišti objektů a zmínit název objektu v listu aplikace Excel.
- Typ lokátoru - Použitá identifikační technika je id, Xpath, ClassName atd.
- Jméno lokátora –Název objektu z úložiště objektů, kde je uložena hodnota lokátoru. Například, Pokud úložiště obsahuje hodnotu Xpath prvku s ObjectName jako „Username“, pak je LocatorName uvedeno jako „UserName“.
POZNÁMKA: Podle LocatorType uvedeného v listu aplikace Excel by měla být jeho hodnota uložena v úložišti objektů. Například: Pokud je Xpath zadán jako LocatorType, pak by úložiště mělo uložit Xpath tohoto prvku, pokud je ID zadáno jako Locatortype, pak by mělo být ID uloženo atd.
# 5) Testovací skripty nebo skript ovladače
Toto je hlavní skript, který čte veškerý obsah listu aplikace Excel a provádí odpovídající akci. Skript je navržen na základě toho, jak je vytvořena šablona.
V našem případě, protože každý testovací list funguje jako testovací případ a každý řádek jako testovací krok, lze skript ovladače vytvořit iterací napříč listy a poté řádky.
V každém konkrétním řádku se načte klíčové slovo a provede se jeho odpovídající metoda v souboru knihovny atd. To pokračuje, dokud nebudou provedeny všechny kroky testu v testovacím případě. Poté pokračuje k dalšímu testovacímu případu / listu a provede jej.
package Automation.KeywordFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; import java.util.Properties; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Reporter; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.testng.asserts.Assertion; import Keywords.Defined.Assertions; import Keywords.Defined.Keywords; public class IrctcLogic { WebDriver driver; String path = System.getProperty('user.dir'); Keywords keyword = new Keywords(); Assertions assertion = new Assertions(); @Test public void readExcelandexecute() throws IOException, InterruptedException{ //From excelfile String excelFilePath = path+'\Externals\Test Cases.xlsx'; FileInputStream fileInputStream = new FileInputStream(excelFilePath); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); int testcasescount = workbook.getNumberOfSheets()-1; System.out.println('Total test cases :'+testcasescount); for (int testcase=0;testcaseZávěr
Jakmile je tedy rámec vytvořen, je znovu použitelný pro více testovacích případů / projektů. Tímto způsobem snižuje pracovní dobu vytváření automatizačního skriptu pro každý projekt.
jak přehrávat soubory .swf
V další kapitole se budeme zabývat vytvořením hybridního rámce, který je kombinací rámce řízeného klíčovým slovem a rámce založeného na datech.
=> Přečtěte si sérii Easy Selenium Training Series.
Doporučené čtení
- Rámec řízený daty v selenu WebDriver pomocí POI Apache
- Jak funguje testování založené na datech (příklady QTP a selenu)
- Úvod do rámce JUnit a jeho použití v selenovém skriptu - výuka selenu č. 11
- Co je hybridní rámec v selenu?
- Výukový program pro vyhledání prvku selen pomocí textu s příklady
- 30+ nejlepších návodů na selen: Naučte se selen se skutečnými příklady
- Vytváření rámce selenu a přístup k testovacím datům z aplikace Excel - Selenium Tutorial # 21
- Java „toto“ klíčové slovo: Výukový program s příklady kódu