data driven framework selenium webdriver using apache poi
Como trabalhar no Data Driven Framework no Selenium usando o Apache POI?
O Data Driven Framework é um dos mais populares frameworks de teste de automação no mercado atual. O teste automatizado orientado por dados é um método no qual o conjunto de dados de teste é criado na planilha do Excel e, em seguida, importado para ferramentas de teste de automação para alimentar o software em teste.
Selenium Webdriver é uma ótima ferramenta para automatizar aplicativos baseados na web. Mas não oferece suporte a operações de leitura e gravação em arquivos do Excel.
quanto você pode ganhar no teste de usuário
Portanto, usamos APIs de terceiros como Apache POI.
O que você aprenderá neste tutorial:
- O que é a estrutura baseada em dados no Selenium WebDriver usando o exemplo do Excel
- Como ler e gravar dados da planilha do Excel no Selenium WebDriver usando Apache POI
O que você aprenderá:
- O que é Apache POI?
- Por que testes de unidade de dados?
- O que precisamos para implementar o Data Driven Framework?
- Interface no POI
- As etapas para usar o Selenium com Apache POI
- Vantagens de usar Data Driven Framework
- Conclusão
- Leitura recomendada
O que é Apache POI?
Apache POI (Poor Obfuscation Implementation) é uma API escrita em Java para suportar operações de leitura e gravação - modificação de arquivos de escritório. Esta é a API mais comum usada para Testes baseados em dados Selenium .
Existem várias maneiras de implementar uma estrutura orientada a dados , e cada um difere no esforço necessário para desenvolver a estrutura e a manutenção.
O desenvolvimento de uma estrutura baseada em dados no Selenium usando POI ajuda a reduzir a manutenção e melhora a cobertura de teste, proporcionando assim um bom retorno sobre o investimento.
Leituras recomendadas:
Por que testes de unidade de dados?
Freqüentemente, pode haver vários conjuntos de dados que devem ser usados para testar um recurso de um aplicativo. Agora, executar o mesmo teste com dados diferentes manualmente é demorado, sujeito a erros e uma tarefa enfadonha.
Vamos entender este cenário com um exemplo .
Suponha que precisamos testar o formulário login / Register / Any com vários campos de entrada com 100 conjuntos de dados diferentes.
Para testar isso, você tem três abordagens diferentes:
1) Crie 100 scripts um para cada conjunto de dados e execute cada teste um por um.
dois) Altere os dados no script e execute-o várias vezes.
3) Importe os dados da planilha do Excel e execute o script várias vezes com dados diferentes.
Os dois primeiros cenários são trabalhosos e demorados - implicando em baixo ROI. Portanto, devemos seguir a terceira abordagem.
Na terceira abordagem, estão implementando o framework Data Driven, onde todos os nossos dados residem em uma planilha excel, de onde são importados e usados para testar os recursos do aplicativo.
=> Quer saber mais sobre o Data Driven Framework? Temos um detalhado artigo você pode verificar aqui .
O que precisamos para implementar o Data Driven Framework?
Para seguir esta abordagem, devemos ter o Eclipse, TestNG devidamente configurado.
Uma vez feito isso, veremos:
- Várias interfaces do Apache POI.
- Integração do Apache POI no Eclipse.
- Leia os dados da planilha do Excel.
- Grave os dados na planilha do Excel.
- Vantagens de usar o Apache POI com Selenium.
Interface no POI
Uma das características mais marcantes de Apache POI é que ele suporta operações de leitura e gravação em arquivos .xls e .xslx.
Abaixo mencionados estão alguns dos interfaces de POI .
- XSSFWorkbook: Representa a pasta de trabalho em arquivo xlsx.
- HSSFWorkbook: Representa a pasta de trabalho em arquivo xls.
- XSSFSheet: Representa uma folha em arquivo XLSX.
- HSSFSheet: Representa uma folha em arquivo XLS.
- XSSFRow: Representa uma linha em uma folha de arquivo XLSX.
- HSSFRow: Representa uma linha em uma folha de arquivo XLS.
- XSSFCell: Representa uma célula em uma linha do arquivo XLSX.
- HSSFCell: Representa uma célula em uma linha do arquivo XLS.
Campos disponíveis em uma célula:
- CELL_TYPE_BLANK: Representa uma célula em branco.
- CELL_TYPE_BOOLEAN: Representa uma célula booleana (verdadeiro ou falso).
- CELL_TYPE_ERROR: Representa um valor de erro em uma célula.
- CELL_TYPE_FORMULA: Representa um resultado de fórmula em uma célula.
- CELL_TYPE_NUMERIC: Representa dados numéricos em uma célula.
- CELL_TYPE_STRING: Representa string em uma célula.
As etapas para usar o Selenium com Apache POI
Vamos criar um script de automação para testar o processo de login de aplicativos baseados na web.
youtube to wav converter download grátis
Aqui, eu fiz LinkedIn como um exemplo .
Importamos os dados de uma planilha do excel e depois os utilizamos para fazer o login no aplicativo e após a execução, escrevemos o resultado na planilha do excel.
Precisamos do seguinte software instalado em nosso sistema para continuar com as etapas de execução do framework:
- Java JDK 1.7+
- IDE Eclipse
- TestNG
- Potes de selênio
- Microsoft Office / Open Office
Passo 1)
Em primeiro lugar, precisamos configurar o Eclipse com Apache POI .
Baixar arquivos jar para Apache POI.
Passo 2)
Descompacte o arquivo jar e adicione os seguintes jars ao seu projeto e configure-os.
- 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
Etapa 3)
Após configurar os respectivos jars, crie uma planilha do excel, insira alguns dados nela e salve como TestData.xlsx no local de sua preferência.

Passo 4)
Agora vamos seguir o código de exemplo para ler os dados da planilha do Excel e usá-lo para fazer o login no 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()); } } } Etapa 5)
Clique com o botão direito na classe de caso de teste e clique em Execute como -> Teste TestNG.
Apache POI importa dados da planilha do Excel e os usa para fazer login em nosso aplicativo. Agora que vimos como ler os dados da planilha do Excel, vamos ver como escrever na planilha.
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(); } } } Observação : Se você encontrar qualquer problema durante este processo, verifique os seguintes pontos.
- Certifique-se de que todos os jars mencionados sejam adicionados ao projeto e devidamente configurados.
- O software necessário está instalado corretamente.
- Uso adequado de uma interface com relação ao arquivo Excel, como HSSF para .xls e XSSF para .xlsx.
- É usado um índice válido de linha e coluna.
- O arquivo Excel deve ser fechado antes da execução.
- Classes adequadas usadas para o arquivo Excel como XSSF usado para arquivos .xlsx e HSSF usado para arquivos .xls.
Vantagens de usar Data Driven Framework
- Melhora a cobertura do teste.
- Reutilização de código.
- Menos manutenção.
- Execução mais rápida.
- Permite melhor tratamento de erros.
Conclusão
A entrada / saída de e para um arquivo é uma parte muito crítica do processo de teste de software. Apache POI desempenha um papel vital em tornar isso possível para o Selenium Test Automation.
Selênio integrado com Apache POI facilita a execução de seu script várias vezes com conjuntos de dados diferentes, com todos os dados mantidos em um único local. Isso economiza tempo e esforço de manutenção no script de teste.
Sobre a autor: Este é um post convidado de Vivek, um engenheiro de controle de qualidade.
Você tem alguma dúvida quanto à implementação da estrutura de teste orientada a dados no Selenium WebDriver usando Apache POI? Deixe-nos saber nos comentários abaixo.
Leitura recomendada
- Criação do Selenium Framework e acesso aos dados de teste do Excel - Selenium Tutorial # 21
- Teste baseado em dados ou parametrizado com Spock Framework
- Como funcionam os testes orientados a dados (exemplos de QTP e Selenium)
- Introdução ao JUnit Framework e seu uso no Selenium Script - Selenium Tutorial # 11
- Como realizar testes orientados a dados usando a ferramenta TestComplete
- QTP Tutorial # 18 - Estruturas baseadas em dados e híbridas explicadas com exemplos de QTP
- Como usar o framework TestNG para criar scripts do Selenium - Tutorial # 12 do TestNG Selenium
- Como realizar testes orientados a dados no SoapUI Pro - Tutorial # 14 do SoapUI