Mikä on Selenium Framework?
Seleeni Framework on koodi rakenteeltaan sellaisia, että koodin huoltamisesta helppoa ja tehokasta. Ilman kehyksiä käyttäjät voivat sijoittaa "koodi" ja "tiedot" samaan paikkaan, joka ei ole uudelleenkäytettävissä eikä luettavissa. Kehykset tuottavat hyödyllisiä tuloksia, kuten lisääntynyt koodin uudelleenkäytettävyys, parempi siirrettävyys, pienemmät komentosarjan ylläpitokustannukset, parempi koodin luettavuus jne.
Selenium WebDriver on luonut pääasiassa kolmen tyyppisiä kehyksiä manuaalisten testitapausten automatisoimiseksi
- Tietoihin perustuva testikehys
- Avainsanavetoinen testikehys
- Hybridi-testikehys
Dataohjattu kehys seleenissä
Data-ajettu kehys seleenissä on tapa erottaa tietojoukot testitapauksesta. Kun tietojoukot on erotettu testitapauksesta, niitä voidaan helposti muokata tiettyä toimintoa varten muuttamatta koodia. Sitä käytetään hakemaan testitapauksia ja paketteja ulkoisista tiedostoista, kuten Excel, .csv, .xml tai joistakin tietokantataulukoista.
Apache tarjoaa Excelin lukemiseen tai kirjoittamiseen erittäin kuuluisan POI-kirjaston. Tämä kirjasto pystyy lukemaan ja kirjoittamaan sekä XLS- että XLSX- tiedostomuotoja Excelistä.
Lukea XLS tiedostoja An HSSF toteutus tarjoaa POI kirjasto.
Lukea XLSX, XSSF täytäntöönpano POI kirjasto on valinta. Tutkitaan näitä toteutuksia yksityiskohtaisesti.
Olemme jo oppineet dataohjatusta testauksesta edellisessä opetusohjelmassa
Avainsanavetoinen kehys seleenissä
Avainsanavetoinen kehys seleenissä on menetelmä, jota käytetään nopeuttamaan automaattista testausta erottamalla avainsanat tavallisille toiminnoille ja ohjeille. Kaikki suoritettavat toiminnot ja ohjeet kirjoitetaan johonkin ulkoiseen tiedostoon, kuten Excel-arkki. Käyttäjät voivat helposti hallita ja määrittää testattavat toiminnot.
Näin koko kehys näyttää
Kuten näette, se on 5-vaiheinen kehys. Tutkitaan sitä vaiheittain yksityiskohtaisesti
Vaihe 1)
- Ohjaimen komentosarja Execute.java kutsuu ReadGuru99ExcelFile.java
- ReadGuru99ExcelFile.java sisältää POI-komentosarjan tietojen lukemiseksi Excelistä
Vaihe 2)
- ReadGuru99ExcelFile.java lukee tietoja TestCase.xlsx-tiedostosta
- Näin arkki näyttää-
- Excel-tiedostoon kirjoitettujen avainsanojen mukaan kehys suorittaa toiminnon käyttöliittymässä.
- Meidän on esimerkiksi napsautettava Kirjaudu sisään -painiketta. Vastaavasti Excelillä on avainsana "Click". Nyt AUT: lla voi olla satoja painikkeita sivulla sisäänkirjautumispainikkeen tunnistamiseksi. Excelissä syötämme objektin nimen kirjautumispainikkeeksi ja objektityypiksi nimellä (katso korostettu rivi yllä olevassa kuvassa). Objektityyppi voi olla Xpath, nimi CSS tai mikä tahansa muu arvo
Vaihe 3) ReadGuru99ExcelFile.java välittää nämä tiedot ohjainohjelmalle Execute.java
Vaihe 4)
- Kaikille käyttöliittymän verkkoelementeillemme meidän on luotava objekti-arkisto, johon sijoitamme niiden elementtien paikantimen (kuten Xpath, nimi, CSS-polku, luokan nimi jne.)
- Execute.java (ohjainkoodimme) lukee koko objektivaraston ja tallentaa sen muuttujaan
- Tämän objektivaraston lukemiseen tarvitsemme ReadObject-luokan, jolla on getObjectRepository-menetelmä sen lukemiseen.
HUOMAUTUS: Voit ajatella, miksi meidän on luotava objektivarasto. Vastaus auttaa koodin ylläpidossa. Käytämme esimerkiksi painiketta = name = btnlogin 10 eri testitapauksessa. Tulevaisuudessa kehittäjä päättää muuttaa nimeksi btnlogin lähetettäväksi. Sinun on tehtävä muutos kaikissa 10 testitapauksessa. Objektivaraston tapauksessa teet muutoksen vain kerran arkistossa.
Vaihe 5)
- Kuljettaja siirtää tiedot Excel & Object Repository -palvelusta UIOperation-luokkaan
- UIOperation-luokassa on toimintoja suorittaa toimintoja, jotka vastaavat avainsanoja, kuten KLIKKAUS, ASETTELU jne.
- UIOperation-luokka on Java-luokka, jolla on todellinen koodin toteutus web-elementtien toimintojen suorittamiseksi
Koko projekti näyttää-
Tarkastellaan esimerkkiä:
Testiskenaario
- Suoritamme 2 testitapausta
- Testitapaus 1:
- Siirry http://demo.guru99.com/V4/
- Anna käyttäjätunnus
- Kirjoita salasana
- Napsauta Palauta
- Testitapaus 2:
- Siirry http://demo.guru99.com/V4/
- Anna käyttäjätunnus
- Kirjoita salasana
- Napsauta Kirjaudu
objekti. ominaisuudet
url = http: //demo.guru99.com/V4/
käyttäjänimi = uid
salasana = salasana
otsikko = paroni
loginButton = btnLogin
resetButton = btnReset
ReadGuru99ExcelFile.java
paketti excelExportAndFileIO;tuo java.io.File;tuo java.io.FileInputStream;tuo java.io.IOException;tuo org.apache.poi.hssf.usermodel.HSSFWorkbook;tuo org.apache.poi.ss.usermodel.Sheet;tuo org.apache.poi.ss.usermodel.Workbook;tuo org.apache.poi.xssf.usermodel.XSSFWorkbook;julkinen luokka ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) heittää IOException {// Luo tiedosto-luokan objekti avataksesi xlsx-tiedostonTiedosto = uusi tiedosto (filePath + "\\" + tiedostonimi);// Luo FileInputStream-luokan objekti Excel-tiedoston lukemiseksiFileInputStream inputStream = uusi FileInputStream (tiedosto);Työkirja guru99Workbook = null;// Etsi tiedostopääte jakamalla tiedoston nimi alaosassa ja hankkimalla vain laajennuksen nimiMerkkijono fileExtensionName = tiedostonimi.substring (tiedostonimi.indexOf ("."));// Tarkista ehto, onko tiedosto xlsx-tiedostojos (fileExtensionName.equals (". xlsx")) {// Jos se on xlsx-tiedosto, luo XSSFWorkbook-luokan objektiguru99Workbook = uusi XSSFWorkbook (inputStream);}// Tarkista ehto, onko tiedosto xls-tiedostoelse if (tiedostoExtensionName.equals (". xls")) {// Jos se on xls-tiedosto, luo XSSFWorkbook-luokan objektiguru99Workbook = uusi HSSFWorkbook (inputStream);}// Lue työkirjan sisällä oleva taulukko nimelläArkki guru99Sheet = guru99Työkirja.getSheet (taulukonNimi);paluu guru99Sheet;}}
ReadObject.java
paketin käyttö;tuo java.io.File;tuo java.io.FileInputStream;tuo java.io.IOException;tuo java.io.InputStream;tuo java.util.Kiinteistöt;julkinen luokka ReadObject {Ominaisuudet p = uudet Ominaisuudet ();public Properties getObjectRepository () heittää IOExceptionin// Lue objektivarastotiedostoInputStream-virta = uusi FileInputStream (uusi tiedosto (System.getProperty ("user.dir") + "\\ src \\ object \\ object.properties"));// lataa kaikki objektitp. lataus (virta);paluu p;}}
UIOperation.java
paketin käyttö;tuo java.util.Kiinteistöt;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;julkisen luokan UIOkäyttö {WebDriver-ohjain;public UIOperation (WebDriver-ohjain) {this.ajuri = kuljettaja;}public void perform (Ominaisuudet p, Merkkijono-operaatio, String objectName, String objectType, String-arvo) heittää poikkeuksen {System.out.println ("");kytkin (operation.toUpperCase ()) {tapaus "KLIKKAA":// Suorita napsautusdriver.findElement (this.getObject (p, objectName, objectType)). napsauta ();tauko;tapaus "SETTEXT":// Aseta teksti ohjaukseendriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (arvo);tauko;tapaus "GOTOURL":// Hae sovelluksen URL-osoitedriver.get (p.getProperty (arvo));tauko;tapaus "GETTEXT":// Hae elementin tekstidriver.findElement (this.getObject (p, objectName, objectType)). getText ();tauko;oletus:tauko;}}/ *** Etsi elementti BY käyttämällä objektityyppiä ja arvoa* @param s* @param objectName* @param objectType* @paluu* @throws Poikkeus* /yksityinen GetObject (Ominaisuudet p, String objectName, String objectType) heittää poikkeuksen {// Etsi xpathin avullaif (objectType.equalsIgnoreCase ("XPATH")) {palauta By.xpath (p.getProperty (objectName));}// etsi luokittainelse if (objectType.equalsIgnoreCase ("LUOKANIMI")) {return By.luokanimi (p.getProperty (objectName));}// etsi nimelläelse if (objectType.equalsIgnoreCase ("NAME")) {palauta By.name (p.getProperty (objectName));}// Etsi css: ltäelse if (objectType.equalsIgnoreCase ("CSS")) {palauta By.cssSelector (p.getProperty (objectName));}// etsi linkin kauttaelse if (objectType.equalsIgnoreCase ("LINK")) {palauta By.linkText (p.getProperty (objectName));}// etsi osittain linkin kauttaelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {palauta By.partialLinkText (p.getProperty (objectName));}muu{heittää uusi poikkeus ("Väärä objektityyppi");}}}
ExecuteTest.java
paketti testikotelot;tuo java.util.Kiinteistöt;tuontioperaatio.ReadObject;tuontioperaatio.tuo org.apache.poi.ss.usermodel.Row;tuo org.apache.poi.ss.usermodel.Sheet;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;tuo excelExportAndFileIO.ReadGuru99ExcelFile;julkinen luokka ExecuteTest {@Testatapublic void testLogin () heittää poikkeuksen {// TODO Automaattisesti luotu menetelmän tynkäWebDriver webdriver = uusi FirefoxDriver ();ReadGuru99ExcelFile-tiedosto = uusi ReadGuru99ExcelFile ();ReadObject-objekti = uusi ReadObject ();Ominaisuudet allObjects = object.getObjectRepository ();UIOperation-operaatio = uusi UIOperation (web-ohjain);// Lue avainsanataulukkoArkki guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Etsi rivit Excel-tiedostostaint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Luo silmukka kaikkien Excel-tiedostorivien yli sen lukemiseksifor (int i = 1; i" + rivi.getCell (0) .toString () + "Aloitettu");}}}}
Suorituksen jälkeen tulos näyttää tältä -
Lataa Selenium-projektitiedostot esittelyyn tästä opetusohjelmasta
Hybridikehys
Hybridikehys seleenissä on käsite, jossa käytämme sekä avainsanavetoisen kehyksen että tietopohjaisen kehyksen etua. Se on helppokäyttöinen kehys, jonka avulla manuaaliset testaajat voivat luoda testitapauksia tarkastelemalla vain avainsanoja, testitietoja ja objektivarastoa koodaamatta kehyksessä.
Tässä avainsanoissa käytämme Excel-tiedostoja testitapausten ylläpitoon, ja testitietoihin voimme käyttää dataa, Testng-kehyksen toimittajaa.
Täällä hybridikehyksessä meidän ei tarvitse muuttaa mitään avainsanapohjaisessa kehyksessä, tässä meidän on vain korvattava ExecuteTest.java-tiedosto HybridExecuteTest.java-tiedostolla.
Tässä HybridExecuteTest-tiedostossa on kaikki avainsanakoodit datan tarjoajan käsitteellä.
Hybridikehyksen täydellinen kuvallinen esitys näyttää
HybridExecuteTest.java
paketti testikotelot;tuo java.io.IOException;tuo java.util.Kiinteistöt;tuontioperaatio.ReadObject;tuontioperaatio.tuo org.apache.poi.ss.usermodel.Row;tuo org.apache.poi.ss.usermodel.Sheet;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.DataProvider;tuo org.testng.annotations.Test;tuo excelExportAndFileIO.ReadGuru99ExcelFile;public class HybridExecuteTest {WebDriver webdriver = nolla;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) heittää poikkeuksen {// TODO Automaattisesti luotu menetelmän tynkäif (testikotelonimi! = null && testikotelonimi.pituus ()! = 0) {webdriver = uusi FirefoxDriver ();}ReadObject-objekti = uusi ReadObject ();Ominaisuudet allObjects = object.getObjectRepository ();UIOperation-operaatio = uusi UIOperation (web-ohjain);// Soittotoiminto toiminnon suorittamiseksi käyttöliittymässäoperation.perform (allObjects, avainsana, objectName,objectType, arvo);}@DataProvider (nimi = "hybridData")public Object [] [] getDataFromDataprovider () heittää IOExceptionin {Object [] [] object = tyhjä;ReadGuru99ExcelFile-tiedosto = uusi ReadGuru99ExcelFile ();// Lue avainsanataulukkoArkki guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Etsi rivit Excel-tiedostostaint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [riviluku] [5];for (int i = 0; iYhteenveto:
- Selenium WebDriver -ohjelmalla voimme luoda kolmen tyyppisiä testikehyksiä.
- Nämä ovat Data Driven-, Keyword Driven- ja Hybrid-testikehykset.
- Voimme saavuttaa datapohjaisen kehyksen käyttämällä TestNG: n tietopalvelua.
- Avainsanavetoisessa kehyksessä avainsanat kirjoitetaan joihinkin ulkoisiin tiedostoihin, kuten Excel-tiedosto, ja Java-koodi kutsuu tätä tiedostoa ja suorittaa testitapauksia.
- Hybridiympäristö on sekoitus avainsanavetoista ja tietopohjaista kehystä.
Lataa Selenium-projektitiedostot esittelyyn tästä opetusohjelmasta