selenium framework creation
I den senaste handledningen bekanta vi oss med grunderna för testautomatiseringsramar , dess komponenter och typer. Ramarna som illustrerades i föregående handledning var några av de mest populära ramarna som användes av testbrödraskapet.
Vi diskuterade kort modulbaserade ramverk, bibliotekarkitekturbaserade ramverk, nyckelorddrivna ramverk, datadrivna ramverk och hybridramar. Det finns olika andra ramar också på platsen.
Vänligen notera att vi skulle anta Data Driven Test Automation Framework för resten av våra handledning.
I strömmen handledning i denna serie , vi skulle göra dig bekant med a exempelram, Excels som lagrar testdata och deras Excel-manipulationer . På samma sätt skulle vi gå vidare och införa nya strategier och resurser för att mogna vår ram.
Så låt oss lära oss:
- Framework-skapande strategi med hjälp av ett exempelprojekt
- Få åtkomst till testdata som lagrats i den externa datakällan
Framåt skulle vi börja med beskrivningen av projekthierarkin som vi skulle skapa för att separera de olika projektkomponenterna.
Se nedanstående bild för projekthierarkin som skapats för exempelprojektet. Nedanstående Java-projekt kan enkelt skapas inom förmörkelsen på det sätt som vi skapade projekten i de tidigare självstudierna.
Vad du kommer att lära dig:
Seleniums projektmappstruktur - genomgång
# 1) src - Mappen innehåller alla testskript, generics, läsare och verktyg. Alla dessa resurser är bara de enkla java-klasserna. Under källmappen (src) har vi skapat en hierarki av mappar.
ett test - 'Test' -mappen består av huvudsakligen två ingredienser - testsvit och mapparna som representerar de olika modulerna i applikationen som testas. Således innehåller var och en av dessa mappar de testskript som är specifika för den modul till vilken de är associerade. Testsuite är en logisk kombination av mer än ett testskript. Således kan användaren markera en post av vilket testskript som helst inom testsviten som han / hon önskar utföra i efterföljande körningar.
vad är det som är mjukvarutestning
b) verktyg - 'Utility' -mappen består av olika generik, konstanter, läsare och klasser för att implementera användardefinierade undantag. Varje mapp under verktyg har sin egen betydelse.
- Excel Reader - En generisk och vanlig klass har skapats för att läsa testdata (inmatningsparametrar och förväntade resultat) från Excel-ark
- MiljöKonstanter - Mappen är integration av java-klasserna som lagrar de statiska variablerna med hänvisning till sökvägarna och andra miljödetaljer. Dessa uppgifter kan vara applikations-URL, URL till databaser, referenser för databaser och URL till alla verktyg från tredje part som används. De olika applikations-URL: erna kan ställas in för olika miljöer (dev, prod, test, master, slave etc).
- DataSetters - Mappen innehåller de klasser som implementerar getters och setter för testdata som hämtats från Excels. För att ladda flera uppsättningar testdata skapar vi ArrayLists.
- UserRoles - Mappen rymmer de klasser som tar hand om de rollbaserade åtkomstkriterierna, om sådana finns för instinktanvändare.
- Funktionsbibliotek - Mappen består av de klasser som innehåller funktioner och metoder som kan delas och användas bland flera klasser. Mycket ofta ska vi utföra vissa procedurer före och efter det faktiska testkörningen som inloggning till applikationen, inställning av miljöer, aktiviteter relaterade till rullar, datamanipulationer, skrivresultat, metoder som genererar förhands- / efterbetingelser till andra metoder . Eftersom vi tenderar att utföra dessa aktiviteter för hela eller större delen av testskriptet. Därför rekommenderas det alltid att skapa en separat klass för sådana aktiviteter istället för att koda dem upprepade gånger i vart och ett av testskripten.
- PreConditionalMethods
- PostConditionalMethods
Mycket ofta ska vi utföra vissa procedurer före och efter det faktiska testkörningen som inloggning till applikationen, inställning av miljöer, aktiviteter relaterade till användarroller, datamanipulation, skrivresultat, metoder som genererar förhållanden före / efter villkor till andra metoder. Eftersom vi tenderar att utföra dessa aktiviteter för hela eller större delen av testskriptet, rekommenderas därför alltid att skapa en separat klass för sådana aktiviteter istället för att koda dem upprepade gånger i vart och ett av testmanusen.
Vanliga metoder
Precis som före och efter villkor kan det finnas metoder och funktioner som kan användas av mer än ett testskript. Således grupperas dessa metoder i en klass. Testskriptet kan komma åt dessa metoder med hjälp av objektet för den gemensamma klassen.
# 2) Excel-filer - Excel-filerna anses vara datakällan / dataleverantörerna för körning av testskript. Dessa filer lagrar testdata i nyckel-värdepar. Anteckna att vi skapar ett separat excelblad för vart och ett av testskriptet, dvs. varje testskript har sin egen testdatafil. Namnet på testskriptet och motsvarande testdatafiler / excel-ark har hållits desamma för spårbarhetsperspektivet. Kolla in testdataformatet nedan:
Testdataformat
Var och en av kolumnerna representerar en nyckel och var och en av raderna representerar testdata / värde. Ange flera rader för att köra samma testskript med flera datamängder.
Markera att testdataformaten enbart är användardefinierade. Således baserat på dina krav kan du anpassa testdatafilerna.
# 3) bibliotek - Mappen fungerar som ett förråd / artefaktör för alla nödvändiga jar-filer, bibliotek, drivrutiner etc för att framgångsrikt bygga testmiljön och utföra testskript. Se följande bild för att kolla in de bibliotek vi skulle anställa inom vårt projekt.
bästa gratis programvara för att rengöra pc
# 4) loggar - Mappen innehåller en .txt-fil som lagrar loggningsinformationen vid varje körning.
# 5) Testmaterial - Mappen innehåller de faktiska testdata som behöver laddas upp om någon. Den här mappen kommer in i bilden när vi stöter på testscenarier där användaren måste ladda upp filer, dokument, bilder, rapporter etc.
# 6) build.xml - Xml-filen används av “Ant Server” för att automatisera hela byggprocessen.
# 7) log4j.xml - Denna xml-fil används av ett Java-baserat verktyg som heter 'Log4j' för att generera exekveringsloggar.
Notera : Vi skulle studera mer om loggarna, användardefinierade undantag och Ant i detalj i de kommande handledningarna. Så kom inte i panik om du blir förvirrad mellan föreställningarna.
Nu, när vi går framåt, låt oss förstå fenomenet där vi får tillgång till excel-filerna och fyller i testdata i våra testskript.
För att förstå processen enklare skulle vi dela upp processen i följande steg.
Skapa testdata
Steg 1 : Det första och det främsta steget är att skapa testdata som vi skulle köra testskripten med. Med tanke på det ovan nämnda testdataformatet, låt oss skapa en excel-fil med namnet “TestScript1”. Ange värdena i elementen.
Steg 2 : Nästa steg är att ladda ner ett standard Java-baserat API / bibliotek med namnet “Java excel Library” (jxl) för att få åtkomst till de redan skapade generiska metoderna för Excel Manipulation.
Steg 3 : Skapa en generell Excel-läsarklass som heter 'ExcelReader.java'. Kopiera koden nedan i ExcelReader.java.
package Utilities; import java.io.File; import java.io.IOException; import java.util.Hashtable; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * This is a utility class created to read the excel test data file before performing the test steps. * This class loads the excel file and * reads its column entries. * */ public class ExcelReader { /** * The worksheet to read in Excel file */ public static Sheet wrksheet; /** * The Excel file to read */ public static Workbook wrkbook = null; /** * Store the column data */ public static Hashtable dict = new Hashtable(); /** * Create a Constructor * * @param ExcelSheetPath * @throws BiffException * @throws WeblivException */ public ExcelReader(String ExcelSheetPath) throws IOException, BiffException { // Initialize try { wrkbook = Workbook.getWorkbook(new File(ExcelSheetPath)); wrksheet = wrkbook.getSheet('Sheet1'); } catch (IOException e) { throw new IOException(); } } /** * Returns the Number of Rows * * @return Rows */ public static int RowCount() { return wrksheet.getRows(); } /** * Returns the Cell value by taking row and Column values as argument * * @param column * @param row * @return Cell contents */ public static String ReadCell(int column, int row) { return wrksheet.getCell(column, row).getContents(); } /** * Create Column Dictionary to hold all the Column Names */ public static void ColumnDictionary() { // Iterate through all the columns in the Excel sheet and store the // value in Hashtable for (int col = 0; col Steg 4 : Skapa en generisk klass - 'CommonMethods.java'. Skapa en vanlig metod inom klassen som läser cellerna från excel-arket med de metoder som implementeras i ExcelReader.java.
/** * Read the test data from excel file * * @param data The TestData data object */ public void readExcelData (TestData data) { ArrayList browser = new ArrayList(); ArrayList username = new ArrayList(); ArrayList password = new ArrayList(); ArrayList element1 = new ArrayList(); ArrayList element2 = new ArrayList(); ArrayList element3 = new ArrayList(); // Get the data from excel file for (int rowCnt = 1; rowCnt Steg 5 : Skapa en ny java-klass med namnet “TestData.java”. Denna klass skulle fungera som en getter och setter för Excel-data. Kopiera och klistra in följande kod i klassen TestData.java.
package Utilities.dataSetters; import java.util.ArrayList; public class TestData { private ArrayList loginUser = null; private ArrayList password = null; private ArrayList browser = null; private ArrayList element1 = null; private ArrayList element2 = null; private ArrayList element3 = null; /** * @return loginUser */ public ArrayList getLoginUser() { return loginUser; } /** * @param loginUser */ public void setLoginUser(ArrayList loginUser) { this.loginUser = loginUser; } /** * @return password */ public ArrayList getPassword() { return password; } /** * @param password */ public void setPassword(ArrayList password) { this.password = password; } /** * @return browser */ public ArrayList getBrowser() { return browser; } /** * @param browser */ public void setBrowser(ArrayList browser) { this.browser = browser; } /** * @return element1 */ public ArrayList getElement1() { return element1; } /** * @param element1 */ public void setElement1(ArrayList element1) { this.element1 = element1; } /** * @return element2 */ public ArrayList getElement2() { return element2; } /** * @param element2 */ public void setElement2(ArrayList element2) { this.element2 = element2; } /** * @return element3 */ public ArrayList getElement3() { return element3; } /** * @param element3 */ public void setElement3(ArrayList element3) { this.element3 = element3; } }
Steg 6 : Nästa steg är att skapa instanser av java-klasserna 'TestData.java' och 'CommonMethods.java' i testskriptet för att komma åt och fylla i testdata. Se kodavsnittet nedan för initialisering av objekt, läsning av excel-data och fyllning av värden där det behövs.
// Create Objects public ExcelReader excelReaderObj; CommonMethods commonMethodobj = new CommonMethods(); TestData td = new TestData(); // Load the excel file for testing excelReaderObj = new ExcelReader(Path of the excel); // Load the Excel Sheet Col in to Dictionary for use in test cases excelReaderObj.ColumnDictionary(); // Get the data from excel file commonMethodobj.readExcelData (td); // Populate the username driver.findElement(By.id('idofElement')).sendKeys(data.getLoginUser().get(0));
Därför kan du använda förekomsten av klassen testData.java i kombination med getters, vilket testdata som helst kan fyllas i skriptet.
Slutsats:
Självstudien kretsade främst kring begreppen som Framework Creation och Accessing testdata från excellerna. Vi gjorde dig bekant med Framework-skapelsesstrategin med hjälp av ett exempelprojekt. Vi belyste kortfattat de olika komponenterna och aspekterna i vårt ramverk.
För att komma åt testdata som lagrats i den externa datakällan använde vi ett java-baserat API - jxl. Vi skapade också exempelkoden för att läsa och fylla i exceldata i testskript.
Nästa handledning # 22 : I nästa handledning baserar vi vår handledning på begreppen generik och deras tillgänglighetsmekanism . Vi skulle skapa några exempel på generiska metoder och sedan komma åt dem i testskripten. Vi introducerar dig också till konceptet Testsuite och utvecklingen av exempelkoden.
Rekommenderad läsning
- Introduktion till JUnit Framework and Its Use in Selenium Script - Selenium Tutorial # 11
- Datadriven ram i Selen WebDriver med hjälp av Apache POI
- Gurka Selen Tutorial: Gurka Java Selen WebDriver Integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Fördjupade förklaringar om förmörkelser för nybörjare
- Hur man använder TestNG Framework för att skapa Selen-skript - TestNG Selen Tutorial # 12
- Effektiv skriptning av selen och felsökning av scenarier - Selen-handledning # 27
- Felsökning av selenskript med loggar (Log4j-handledning) - Selen-handledning # 26