data driven framework selenium webdriver using apache poi
Comment travailler sur Data Driven Framework dans Selenium à l'aide d'Apache POI?
Data Driven Framework est l'un des frameworks de test d'automatisation les plus populaires sur le marché actuel. Le test automatisé basé sur les données est une méthode dans laquelle l'ensemble de données de test est créé dans la feuille Excel, puis importé dans des outils de test d'automatisation pour alimenter le logiciel testé.
Selenium Webdriver est un excellent outil pour automatiser les applications Web. Mais il ne prend pas en charge les opérations de lecture et d'écriture sur les fichiers Excel.
Par conséquent, nous utilisons API tierces comme Apache POI.
Ce que vous apprendrez dans ce tutoriel:
- Qu'est-ce que le framework piloté par les données dans Selenium WebDriver à l'aide d'un exemple Excel
- Comment lire et écrire des données à partir d'une feuille Excel dans Selenium WebDriver à l'aide d'Apache POI
Ce que vous apprendrez:
- Qu'est-ce que Apache POI?
- Pourquoi des tests de lecteur de données?
- De quoi avons-nous besoin pour implémenter le Data Driven Framework?
- Interface dans POI
- Les étapes pour utiliser Selenium avec Apache POI
- Avantages de l'utilisation de Data Driven Framework
- Conclusion
- lecture recommandée
Qu'est-ce que Apache POI?
Apache POI (Poor Obfuscation Implementation) est une API écrite en Java pour prendre en charge les opérations de lecture et d'écriture - modification des fichiers Office. Il s'agit de l'API la plus couramment utilisée pour Tests basés sur les données Selenium .
Il existe plusieurs façons de mettre en œuvre un framework basé sur les données , et chacun diffère dans l'effort requis pour développer le cadre et la maintenance.
Le développement d'un framework basé sur les données dans Selenium à l'aide de POI permet de réduire la maintenance, d'améliorer la couverture des tests, offrant ainsi un bon retour sur investissement.
Lectures recommandées:
Pourquoi des tests de lecteur de données?
Souvent, il peut y avoir un certain nombre d'ensembles de données qui doivent être utilisés pour tester une fonctionnalité d'une application. Maintenant, exécuter manuellement le même test avec différentes données prend du temps, est source d'erreurs et une tâche ennuyeuse.
Comprenons ce scénario avec un exemple .
Supposons que nous devions tester le formulaire login / Register / Any avec plusieurs champs de saisie avec 100 ensembles de données différents.
Pour tester cela, vous avez trois approches différentes:
1) Créez 100 scripts un pour chaque ensemble de données et exécutez chaque test un par un.
2) Modifiez les données du script et exécutez-le plusieurs fois.
3) Importez les données de la feuille Excel et exécutez le script plusieurs fois avec des données différentes.
Les deux premiers scénarios sont laborieux et prennent du temps, ce qui implique un faible retour sur investissement. Par conséquent, nous devons suivre la troisième approche.
Dans la troisième approche, implémentons le framework Data Driven, où toutes nos données résident dans une feuille Excel, où elles sont importées et utilisées pour tester les fonctionnalités de l'application.
=> Vous voulez en savoir plus sur Data Driven Framework? Nous avons un détail article que vous pouvez consulter ici .
De quoi avons-nous besoin pour implémenter le Data Driven Framework?
Afin de suivre cette approche, nous devons avoir Eclipse, TestNG correctement configuré.
Une fois cela fait, nous examinerons:
- Diverses interfaces d'Apache POI.
- Intégration d'Apache POI dans l'Eclipse.
- Lisez les données de la feuille Excel.
- Écrivez des données dans la feuille Excel.
- Avantages de l'utilisation d'Apache POI avec Selenium.
Interface dans POI
L'une des caractéristiques les plus remarquables de POI Apache est qu'il prend en charge les opérations de lecture et d'écriture sur les fichiers .xls et .xslx.
Ci-dessous, quelques-uns des interfaces de POI .
- XSSFWorkbook: Représente le classeur dans un fichier xlsx.
- Cahier de travail HSSF: Représente le classeur dans un fichier xls.
- XSSFSheet: Représente une feuille dans un fichier XLSX.
- Feuille HSSF: Représente une feuille dans un fichier XLS.
- XSSFRow: Représente une ligne dans une feuille de fichier XLSX.
- HSSFRow: Représente une ligne dans une feuille de fichier XLS.
- XSSFCell: Représente une cellule dans une ligne de fichier XLSX.
- HSSFCell: Représente une cellule dans une ligne de fichier XLS.
Champs disponibles dans une cellule:
- CELL_TYPE_BLANK: Représente une cellule vide.
- CELL_TYPE_BOOLEAN: Représente une cellule booléenne (vrai ou faux).
- CELL_TYPE_ERROR: Représente une valeur d'erreur dans une cellule.
- CELL_TYPE_FORMULA: Représente un résultat de formule sur une cellule.
- CELL_TYPE_NUMERIC: Représente des données numériques dans une cellule.
- CELL_TYPE_STRING: Représente une chaîne dans une cellule.
Les étapes pour utiliser Selenium avec Apache POI
Créons un script d'automatisation pour tester le processus de connexion d'une application Web.
Ici, j'ai pris LinkedIn par exemple .
Nous importons des données depuis une feuille Excel, puis les utilisons pour nous connecter à l'application et après exécution, nous écrivons le résultat dans la feuille Excel.
Nous avons besoin des logiciels suivants installés sur notre système pour poursuivre les étapes d'exécution du cadre:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Bocaux de sélénium
- Microsoft Office / Open Office
Étape 1)
Tout d'abord, nous devons configurer Eclipse avec POI Apache .
Télécharger jar pour Apache POI.
Étape 2)
configuration de C ++ dans eclipse
Décompressez le fichier jar, ajoutez les fichiers jar suivants à votre projet et configurez-les.
- 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
Étape 3)
Après avoir configuré les bocaux respectifs, créez une feuille Excel, saisissez-y des données et enregistrez-la sous TestData.xlsx à votre emplacement préféré.
Étape 4)
Maintenant, suivons l'exemple de code pour lire les données de la feuille Excel et l'utiliser pour nous connecter à 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()); } } }
Étape # 5)
Faites un clic droit sur la classe de cas de test et cliquez sur Exécuter en tant que -> TestNG Test.
POI Apache importe les données de la feuille Excel et les utilise pour se connecter à notre application. Maintenant que nous avons vu comment lire les données de la feuille Excel, voyons comment écrire sur la feuille.
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(); } } }
Remarque : Si vous rencontrez des problèmes pendant ce processus, veuillez vérifier les points suivants.
- Assurez-vous que tous les fichiers JAR mentionnés sont ajoutés au projet et correctement configurés.
- Le logiciel requis est correctement installé.
- Utilisation correcte d'une interface par rapport au fichier Excel, comme HSSF pour .xls et XSSF pour .xlsx.
- Un index de ligne et de colonne valide est utilisé.
- Le fichier Excel doit être fermé avant l'exécution.
- Les classes appropriées utilisées pour le fichier Excel comme XSSF utilisé pour les fichiers .xlsx et HSSF utilisé pour les fichiers .xls.
Avantages de l'utilisation de Data Driven Framework
- Améliore la couverture des tests.
- Réutilisation du code.
- Moins de maintenance.
- Exécution plus rapide.
- Permet une meilleure gestion des erreurs.
Conclusion
L'entrée / sortie depuis et vers un fichier est une partie très critique du processus de test logiciel. POI Apache joue un rôle essentiel pour rendre cela possible pour Selenium Test Automation.
Sélénium intégré avec POI Apache vous permet d'exécuter votre script plusieurs fois avec différents ensembles de données, toutes les données étant conservées à un seul endroit. Cela économise du temps et des efforts de maintenance sur le script de test.
À propos de auteur: Ceci est un article invité par Vivek, un ingénieur en automatisation QA.
Avez-vous des questions sur l'implémentation du cadre de test piloté par les données dans Selenium WebDriver à l'aide d'Apache POI? Faites-nous savoir dans les commentaires ci-dessous.
lecture recommandée
- Création du framework Selenium et accès aux données de test à partir d'Excel - Tutoriel Selenium # 21
- Tests pilotés par les données ou paramétrés avec Spock Framework
- Fonctionnement des tests pilotés par les données (exemples de QTP et de sélénium)
- Introduction à JUnit Framework et à son utilisation dans Selenium Script - Tutoriel Selenium # 11
- Comment effectuer des tests basés sur les données à l'aide de l'outil TestComplete
- Tutoriel QTP n ° 18 - Explication des cadres basés sur les données et hybrides avec des exemples QTP
- Comment utiliser le framework TestNG pour créer des scripts Selenium - Tutoriel TestNG Selenium # 12
- Comment effectuer des tests basés sur les données dans SoapUI Pro - Tutoriel SoapUI # 14