Mi az a szelén keretrendszer?
A Selenium Framework olyan kódstruktúra , amely megkönnyíti és hatékony a kódkarbantartást. Keretek nélkül a felhasználók a „kódot” és az „adatot” ugyanazon a helyen helyezhetik el, amely nem használható fel és nem is olvasható. A keretrendszerek előnyös eredményeket hoznak, mint például a megnövelt kód újrafelhasználhatóság, a nagyobb hordozhatóság, a szkriptek karbantartásának alacsonyabb költségei, a jobb kód olvashatóság stb.
A Selenium WebDriver főleg három típusú keretet hoz létre a manuális tesztesetek automatizálására
- Data Driven Test Framework
- Kulcsszóvezérelt teszt keretrendszer
- Hibrid teszt keretrendszer
Adatvezérelt keretrendszer a szelénben
Az adatvezérelt keretrendszer a szelénben egy módszer az adatsorok elválasztására a tesztesettől. Miután az adatsorokat elkülönítettük a tesztesettől, a kód megváltoztatása nélkül könnyen módosíthatók egy adott funkcióhoz. Tesztesetek és csomagok letöltésére szolgál külső fájlokból, például Excel, .csv, .xml vagy néhány adatbázis-táblázatból.
Excel olvasásához vagy megírásához az Apache egy nagyon híres könyvtári POI-t biztosít. Ez a könyvtár eléggé képes az Excel XLS és XLSX fájlformátumainak olvasására és írására .
Az XLS fájlok olvasásához HSSF megvalósítást biztosít a POI könyvtár.
Az XLSX olvasásához a POI könyvtár XSSF megvalósítása lesz a választás. Tanulmányozzuk részletesen ezeket a megvalósításokat.
Az adatközpontú tesztelésről már korábbi oktatóanyagunkban tanultunk
Kulcsszóvezérelt keretrendszer a szelénben
A szelén kulcsszóvezérelt keretrendszere az automatikus tesztelés felgyorsítására szolgáló módszer, a kulcsszavak elkülönítésével a közös funkció- és utasításkészlethez. Az összes végrehajtandó műveletet és utasítást valamilyen külső fájlba írja be, például egy Excel lapba. A felhasználók könnyen ellenőrizhetik és meghatározhatják a tesztelni kívánt funkciókat.
Így néz ki a teljes keretrendszer
Mint látható, ez egy 5 lépéses keret. Tanuljuk részletesen részletesen
1. lépés)
- Az Execute.java illesztőprogram szkript meghívja a ReadGuru99ExcelFile.java fájlt
- A ReadGuru99ExcelFile.java POI szkriptet tartalmaz az adatok Excelből történő olvasásához
2. lépés)
- A ReadGuru99ExcelFile.java be fogja olvasni az adatokat a TestCase.xlsx fájlból
- Így néz ki a lap-
- Az Excel fájlba írt kulcsszavak szerint a keretrendszer a felhasználói felületen hajtja végre a műveletet.
- Például a "Bejelentkezés" gombra kell kattintanunk. Ennek megfelelően az Excel-nek lesz egy "Click" kulcsszó. Most az AUT-nak több száz gombja lehet az oldalon, hogy azonosítsa a Bejelentkezés gombot, az Excel-ben az Object Name-t beírjuk loginButton & Object type névként (lásd a fenti kép kiemelt sorát). Az Object Type lehet Xpath, CSS név vagy bármely más érték
3. lépés: A ReadGuru99ExcelFile.java továbbítja ezeket az adatokat az Execute.java illesztőprogram parancsfájljának
4. lépés)
- Minden felhasználói felület webes elemünkhöz létre kell hoznunk egy objektumtárat, ahol elhelyezzük az elem lokátorukat (például Xpath, név, CSS elérési út, osztálynév stb.)
- Az Execute.java (az illesztőprogram szkriptünk) elolvassa a teljes objektumtárat és egy változóban tárolja
- Ennek az objektumtárnak az elolvasásához szükségünk van egy ReadObject osztályra, amelynek getObjectRepository metódusa van az olvasáshoz.
MEGJEGYZÉS: Gondolhatja, miért kell létrehoznunk egy objektumtárat. A válasz segít a kód karbantartásában. Például 10 különböző tesztesetben használjuk a name = btnlogin nevű gombot. A jövőben a fejlesztő úgy dönt, hogy megváltoztatja a nevet btnlogin-ról benyújtásra. Mind a 10 tesztesetben változtatni kell. Objektumtár esetén a módosítást csak egyszer hajtja végre a tárban.
5. lépés)
- Az illesztőprogram továbbítja az adatokat az Excel és az Objektumtárból az UIOperation osztályba
- Az UIOperation osztály olyan funkciókkal rendelkezik, amelyek végrehajtják az excelben említett kulcsszavaknak megfelelő kattintásokat, például CLICK, SETTEXT stb
- Az UIOperation class egy Java osztály, amely a kód tényleges megvalósításával rendelkezik a webes elemeken végzett műveletek végrehajtásához
A teljes projekt
Nézzünk meg egy példát:
Teszt forgatókönyv
- 2 tesztesetet hajtunk végre
- 1. teszteset:
- Ugrás http://demo.guru99.com/V4/
- Adja meg a felhasználói azonosítót
- Írd be a jelszót
- Kattintson a Visszaállítás gombra
- 2. teszteset:
- Ugrás http://demo.guru99.com/V4/
- Adja meg a felhasználói azonosítót
- Írd be a jelszót
- Kattintson a Bejelentkezés gombra
objektum.tulajdonságok
URL = http: //demo.guru99.com/V4/
felhasználónév = uid
jelszó = jelszó
cím = báró
loginButton = btnLogin
resetButton = btnReset
ReadGuru99ExcelFile.java
csomag excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public SheetExcel (String filePath, String fileName, String sheetName) dobja az IOException {// Hozzon létre egy objektumot a File osztályból az xlsx fájl megnyitásáhozFile file = új File (filePath + "\\" + fileName);// Hozzon létre egy objektumot a FileInputStream osztályból az Excel fájl olvasásáhozFileInputStream inputStream = új FileInputStream (fájl);Munkafüzet guru99Workbook = null;// Keresse meg a fájlkiterjesztést úgy, hogy felosztja a fájl nevét az alállomáson, és csak a kiterjesztés nevét kapja megString fileExtensionName = fájlnév.substring (fájlNév.indexOf ("."));// Ellenőrizze a feltételt, ha a fájl xlsx fájlif (fileExtensionName.equals (". xlsx")) {// Ha xlsx fájl, akkor hozza létre az XSSFWorkbook osztály objektumátguru99Workbook = új XSSFWorkbook (inputStream);}// Ellenőrizze a feltételt, ha a fájl xls fájlelse if (fileExtensionName.equals (". xls")) {// Ha ez xls fájl, akkor hozza létre az XSSFWorkbook osztály objektumátguru99Workbook = új HSSFWorkbook (inputStream);}// A munkafüzet belsejében olvassa el a lapot annak nevévelLap guru99Sheet = guru99Workbook.getSheet (sheetName);return guru99Sheet;}}
ReadObject.java
csomagkezelés;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Tulajdonságok;nyilvános osztály ReadObject {Tulajdonságok p = új Tulajdonságok ();public Properties getObjectRepository () dobja az IOException {// Objektumtár fájl olvasásaInputStream stream = new FileInputStream (új File (System.getProperty ("user.dir") + "\\ src \\ object \\ object.properties"));// az összes objektum betöltésep.load (stream);visszatérő p;}}
UIOperation.java
csomagkezelés;import java.util.Tulajdonságok;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;nyilvános osztály UIOperation {WebDriver illesztőprogram;public UIOperation (WebDriver illesztőprogram) {this.driver = meghajtó;}public void perform (Tulajdonságok p, String művelet, String objectName, String objectType, String érték) dobja a Exception {System.out.println ("");kapcsoló (operation.toUpperCase ()) {"KLIKK" eset:// Végezze el a kattintástdriver.findElement (this.getObject (p, objectName, objectType)). kattintson ();szünet;"SETTEXT" eset:// Szöveg beállítása a vezérlésendriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (érték);szünet;"GOTOURL" eset:// Az alkalmazás URL-jének letöltésedriver.get (p.getProperty (érték));szünet;"GETTEXT" eset:// Elem szövegének beolvasásadriver.findElement (this.getObject (p, objectName, objectType)). getText ();szünet;alapértelmezett:szünet;}}/ *** Keresse meg a BY elemet az objektumtípus és az érték használatával* @param o* @param objectName* @param objectType* @Visszatérés* @ dob kivétel* /privát A getObject (p tulajdonságok, String objectName, String objectType) dobja a Kivételt {// Megtalálás xpath szerintif (objectType.equalsIgnoreCase ("XPATH")) {return By.xpath (p.getProperty (objectName));}// talál osztályonkéntelse if (objectType.equalsIgnoreCase ("OSZTÁLYNÉV")) {return By.className (p.getProperty (objectName));}// név szerint keresnielse if (objectType.equalsIgnoreCase ("NAME")) {return By.name (p.getProperty (objectName));}// keresés css általelse if (objectType.equalsIgnoreCase ("CSS")) {return By.cssSelector (p.getProperty (objectName));}// linken keresztül kereselse if (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (objectName));}// keresés részleges hivatkozássalelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {{return By.partialLinkText (p.getProperty (objectName));}más{dobja az új Kivételt ("Rossz objektumtípus");}}}
ExecuteTest.java
csomag testCases;import java.util.Tulajdonságok;import művelet.ReadObject;import művelet.UIOperation;import org.apache.poi.ss.usermodel.Row;import 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;nyilvános osztály ExecuteTest {@Tesztpublic void testLogin () dobja a Kivételt {// TODO Automatikusan létrehozott módszercsonkWebDriver webdriver = új FirefoxDriver ();ReadGuru99ExcelFile fájl = új ReadGuru99ExcelFile ();ReadObject objektum = új ReadObject ();Tulajdonságok allObjects = object.getObjectRepository ();UIOperation operation = új UIOperation (webdriver);// Kulcsszólap elolvasásaLap guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Sorok száma az excel fájlbanint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Hozzon létre egy hurkot az excel fájl minden során az olvasáshozfor (int i = 1; i" + row.getCell (0) .toString () + "Started");}}}}
A végrehajtás után a kimenet a következőképpen fog kinézni:
Töltse le a bemutatóhoz tartozó Selenium Project fájlokat ebben az oktatóanyagban
Hibrid keretrendszer
A szelén hibrid keretrendszere olyan fogalom, amelyben mind a Kulcsszó-vezérelt keretrendszer, mind az Adat-alapú keretrendszer előnyeit kihasználjuk. Ez egy könnyen használható keretrendszer, amely lehetővé teszi a manuális tesztelők számára, hogy teszteseteket hozzanak létre a kulcsszavak, a tesztadatok és az objektumtár tárgymutatásával, a kódolás nélkül.
Itt a kulcsszavakhoz Excel-fájlokat fogunk használni a tesztesetek karbantartásához, a tesztadatokhoz pedig az adatokat, a Testng keretrendszer szolgáltatóját.
Itt a hibrid keretrendszerben nem kell semmit változtatnunk a Kulcsszó által vezérelt keretrendszerben, itt csak le kell cserélnünk az ExecuteTest.java fájlt HybridExecuteTest.java fájlra.
Ez a HybridExecuteTest fájl tartalmazza az összes kódot a kulcsszó vezérléséhez az adatszolgáltató koncepciójával.
A hibrid keret teljes képi ábrázolása így fog kinézni
HybridExecuteTest.java
csomag testCases;import java.io.IOException;import java.util.Tulajdonságok;import művelet.ReadObject;import művelet.UIOperation;import org.apache.poi.ss.usermodel.Row;import 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;public class HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String kulcsszó, String objectName, String objectType, String érték) dobja a Kivételt {// TODO Automatikusan létrehozott módszercsonkif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = új FirefoxDriver ();}ReadObject objektum = új ReadObject ();Tulajdonságok allObjects = object.getObjectRepository ();UIOperation operation = új UIOperation (webdriver);// Call perform függvény a felhasználói felületen végzett műveletek végrehajtásáhozoperation.perform (allObjects, kulcsszó, objectName,objectType, érték);}@DataProvider (név = "hybridData")public Object [] [] getDataFromDataprovider () dobja az IOException {Object [] [] object = null;ReadGuru99ExcelFile fájl = új ReadGuru99ExcelFile ();// Kulcsszólap elolvasásaLap guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Sorok száma az excel fájlbanint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; iÖsszegzés:
- Háromféle tesztkeretet hozhatunk létre a Selenium WebDriver segítségével.
- Ezek Data Driven, Key Driven és Hybrid tesztkeretek.
- A DataN alapú keretrendszert a TestNG adatszolgáltatójával érhetjük el.
- A Kulcsszó által vezérelt keretrendszerben a kulcsszavakat néhány külső fájlba írják, például az Excel fájlba, és a Java kód ezt a fájlt hívja meg, és teszteseteket hajt végre.
- A hibrid keretrendszer a kulcsszó- és adatközpontú keretrendszer keveréke.
Töltse le a bemutatóhoz tartozó Selenium Project fájlokat ebben az oktatóanyagban