data driven framework selenium webdriver using apache poi
Com es pot treballar en Data Driven Framework a Selenium mitjançant Apache POI?
desenvolupa preguntes i respostes d’entrevistes per a persones amb experiència
Data Driven Framework és un dels marcs de proves d’automatització més populars del mercat actual. Les proves automatitzades basades en dades són un mètode mitjançant el qual es crea el conjunt de dades de prova al full Excel i, a continuació, s’importa a les eines de proves d’automatització per alimentar-lo al programari que es prova.
Selenium Webdriver és una gran eina per automatitzar aplicacions basades en web. Però no admet les operacions de lectura i escriptura en fitxers Excel.
Per tant, fem servir API de tercers com Apache POI.
Què aprendreu en aquest tutorial:
- Què és el framework basat en dades a Selenium WebDriver mitjançant l'exemple Excel?
- Com llegir i escriure dades del full Excel a Selenium WebDriver mitjançant Apache POI
Què aprendreu:
- Què és el PDI d'Apache?
- Per què les proves de la unitat de dades?
- Què necessitem per implementar Data Driven Framework?
- Interfície en PDI
- Els passos per utilitzar Selenium amb Apache POI
- Avantatges de fer servir Data Driven Framework
- Conclusió
- Lectura recomanada
Què és el PDI d'Apache?
Apache POI (Poor Obfuscation Implementation) és una API escrita en Java per donar suport a les operacions de lectura i escriptura, modificant fitxers d’Office. Aquesta és l'API més comuna que s'utilitza Proves basades en dades de seleni .
Hi ha diverses maneres d'implementar un framework basat en dades , i cadascun difereix en l'esforç necessari per desenvolupar el marc i el manteniment.
Desenvolupar un framework basat en dades a Selenium mitjançant PDI ajuda a reduir el manteniment, a millorar la cobertura de les proves, proporcionant així un bon retorn de la inversió.
Lectures recomanades:
Per què les proves de la unitat de dades?
Sovint pot haver-hi una sèrie de conjunts de dades que s’han d’utilitzar per provar una característica d’una aplicació. Ara, fer la mateixa prova manualment amb dades diferents requereix molt de temps, és propens a l’error i és una tasca avorrida.
Entenem aquest escenari amb un exemple .
Suposem que hem de provar l'inici de sessió / Registre / Qualsevol formulari amb diversos camps d'entrada amb 100 conjunts de dades diferents.
Per provar-ho, teniu tres enfocaments diferents:
1) Creeu 100 scripts un per a cada conjunt de dades i executeu cada prova un per un.
2) Canvieu les dades de l'script i executeu-les diverses vegades.
3) Importeu les dades del full Excel i executeu l'script diverses vegades amb dades diferents.
Els dos primers escenaris són feixucs i requereixen molt de temps, cosa que implica un baix ROI. Per tant, hem de seguir el tercer enfocament.
En el tercer enfocament, s’està implementant el framework Data Driven, on totes les nostres dades resideixen en un full Excel, d’on s’importen i s’utilitzen per provar les característiques de l’aplicació.
=> Voleu obtenir més informació sobre Data Driven Framework? Tenim un detallat article que podeu consultar aquí .
Què necessitem per implementar Data Driven Framework?
Per seguir aquest enfocament hem de tenir Eclipse, TestNG configurat correctament.
Un cop fet, veurem:
- Diverses interfícies d'Apache POI.
- Integració d'Apache POI a Eclipse.
- Llegiu les dades del full d'Excel.
- Escriviu dades al full Excel.
- Avantatges d'utilitzar Apache POI amb Selenium.
Interfície en PDI
Una de les característiques més notables de PDI Apache és que admet operacions de lectura i escriptura en fitxers .xls i .xslx.
A continuació s'esmenten alguns dels interfícies de PDI .
- Llibre de treball XSSF: Representa el llibre al fitxer xlsx.
- Llibre de treball HSSF: Representa el llibre al fitxer xls.
- Full XSSFS: Representa un full al fitxer XLSX.
- Full HSSFS: Representa un full al fitxer XLS.
- XSSFRow: Representa una fila en un full de fitxer XLSX.
- HSSFRow: Representa una fila en un full de fitxer XLS.
- XSSFCell: Representa una cel·la d'una fila de fitxers XLSX.
- HSSFCell: Representa una cel·la d'una fila de fitxers XLS.
Camps disponibles en una cel·la:
- CELL_TYPE_BLANK: Representa una cel·la en blanc.
- CELL_TYPE_BOOLEAN: Representa una cèl·lula booleana (vertadera o falsa).
- CELL_TYPE_ERROR: Representa un valor d'error en una cel·la.
- CELL_TYPE_FORMULA: Representa un resultat de fórmula en una cel·la.
- CELL_TYPE_NUMERIC: Representa dades numèriques en una cel·la.
- CELL_TYPE_STRING: Representa una cadena en una cel·la.
Els passos per utilitzar Selenium amb Apache POI
Creem un script d'automatització per provar el procés d'inici de sessió d'aplicacions basades en web.
proves de punta a punta vs proves de regressió
Aquí he pres LinkedIn com un exemple .
Importem dades d’un full Excel i després les fem servir per iniciar sessió a l’aplicació i, després de l’execució, escrivim el resultat al full Excel.
Necessitem el següent programari instal·lat al nostre sistema per continuar amb els passos per executar el framework:
- Java JDK 1.7+
- IDE Eclipse
- TestNG
- Pots de seleni
- Microsoft Office / Open Office
Pas 1)
En primer lloc, hem de configurar Eclipse amb PDI Apache .
descarregar fitxers jar per al POI d'Apache.
Pas 2)
Descomprimiu el fitxer jar i afegiu els següents pots al vostre projecte i configureu-los.
- dom4j-1.6.1.jar
- poi-3.10-FINAL-20140208.jar
- poi-ooxml-3.10-FINAL-20140208.jar
- poi-ooxml-schemas-3.10-FINAL-20140208.jar
- xmlbeans-2.3.0.jar
Pas 3)
Després de configurar els pots respectius, creeu un full Excel, introduïu-hi algunes dades i deseu-les com a TestData.xlsx a la vostra ubicació preferida.
Pas 4)
Ara anem a seguir el codi de mostra per llegir les dades del full Excel i utilitzar-les per iniciar la sessió linkedin.com .
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); } } }
Pas 5)
què és la prova funcional amb exemples
Feu clic amb el botó dret a la classe de casos de prova i feu clic a Executa com a -> TestNG Test.
PDI Apache importa dades del full Excel i les utilitza per iniciar sessió a la nostra aplicació. Ara que hem vist com llegir les dades del full Excel, anem a veure com escriure al full.
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); // Write data in the excel. FileOutputStream foutput=new FileOutputStream(src); // Specify the message needs to be written. String message = 'Data Imported Successfully.'; // Create cell where data needs to be written. sheet.getRow(i).createCell(3).setCellValue(message); // Specify the file in which data needs to be written. FileOutputStream fileOutput = new FileOutputStream(src); // finally write content workbook.write(fileOutput); // close the file fileOutput.close(); } } }
Nota : Si teniu problemes durant aquest procés, consulteu els punts següents.
- Assegureu-vos que tots els pots esmentats s’afegeixin al projecte i que estiguin configurats correctament.
- El programari necessari està instal·lat correctament.
- Ús adequat d’una interfície respecte al fitxer Excel, com HSSF per a .xls i XSSF per a .xlsx.
- S'utilitza un índex de files i columnes vàlid.
- El fitxer Excel s'ha de tancar abans de l'execució.
- Classes adequades utilitzades per al fitxer Excel com XSSF per a fitxers .xlsx i HSSF per a fitxers .xls.
Avantatges de fer servir Data Driven Framework
- Millora la cobertura de les proves.
- Reutilització del codi.
- Menys manteniment.
- Execució més ràpida.
- Permet un millor tractament d'errors.
Conclusió
L’entrada / sortida des de i cap a un fitxer és una part molt important del procés de proves de programari. PDI Apache juga un paper vital a l'hora de fer això possible per a Selenium Test Automation.
Seleni integrat amb PDI Apache us facilita executar el vostre script diverses vegades amb conjunts de dades diferents, amb totes les dades mantingudes en una mateixa ubicació. Estalvia temps i esforços de manteniment en el guió de prova.
Sobre la autor: Aquesta és una publicació de Vivek, enginyer en automatització de control de qualitat.
Teniu cap consulta que implementi el marc de proves basades en dades a Selenium WebDriver mitjançant Apache POI? Feu-nos-ho saber en els comentaris següents.
Lectura recomanada
- Creació de Selenium Framework i accés a les dades de proves des d'Excel - Tutorial Selenium núm. 21
- Proves basades en dades o parametritzades amb Spock Framework
- Com funcionen les proves impulsades per dades (exemples de QTP i seleni)
- Introducció a JUnit Framework i el seu ús a Selenium Script - Selenium Tutorial # 11
- Com realitzar proves basades en dades mitjançant l'eina TestComplete
- Tutorial QTP # 18: marcs basats en dades i híbrids explicats amb exemples de QTP
- Com s'utilitza el marc TestNG per crear scripts de Selenium - Tutorial # 12 de TestNG Selenium
- Com realitzar proves basades en dades a SoapUI Pro - Tutorial SoapUI núm. 14