O File IO é uma parte crítica de qualquer processo de software. Freqüentemente, criamos um arquivo, abrimos e atualizamos algo ou o apagamos em nossos computadores. O mesmo é o caso com Selenium Automation. Precisamos de um processo para manipular arquivos com Selenium.
Java nos fornece diferentes classes para manipulação de arquivos com Selenium. Neste tutorial, vamos aprender como podemos ler e escrever no arquivo Excel com a ajuda do pacote Java IO e da biblioteca Apache POI.
Apache POI em Selênio
O Apache POI no Selenium é uma API amplamente usada para testes orientados a dados de selênio. É uma biblioteca de POI escrita em Java que oferece aos usuários uma API para manipular documentos da Microsoft como .xls e .xlsx. Os usuários podem facilmente criar, modificar e ler / escrever em arquivos Excel. POI significa “Implementação de Ofuscação Insuficiente”.
- Como lidar com o arquivo Excel usando POI (Maven POM Dependency)
- Classes e interfaces em POI
- Operação de leitura / gravação
- Ler dados do arquivo Excel
- Grave dados em arquivo Excel
- Manipulação do Excel usando JXL API
Exportando Excel
Como lidar com o arquivo Excel usando POI (Maven POM Dependency)
Para ler e escrever arquivos do Excel em Java, o Apache fornece uma biblioteca POI muito famosa. Esta biblioteca é capaz de ler e gravar os formatos de arquivo XLS e XLSX do Excel.
Para ler arquivos XLS , uma implementação HSSF é fornecida pela biblioteca POI.
Para ler o XLSX, a implementação XSSF da biblioteca POI será a escolha. Vamos estudar essas implementações em detalhes.
Se você estiver usando o Maven em seu projeto, a dependência do Maven será
org.apache.poi poi 4.1.1
Ou você pode simplesmente baixar a versão mais recente dos potes de POI em http://poi.apache.org/download.html e baixar o arquivo zip mais recente
Ao baixar o arquivo zip para este jar, você precisa descompactá-lo e adicionar todos esses jars ao caminho da classe do seu projeto.
Classes e interfaces no POI:
A seguir está uma lista de diferentes interfaces Java e classes no POI para a leitura XLS e XLSX file-
- Pasta de trabalho : as classes XSSFWorkbook e HSSFWorkbook implementam essa interface.
- XSSFWorkbook : é uma representação de classe do arquivo XLSX.
- HSSFWorkbook : é uma representação de classe do arquivo XLS.
- Planilha : as classes XSSFSheet e HSSFSheet implementam essa interface.
- XSSFSheet : é uma classe que representa uma planilha em um arquivo XLSX.
- HSSFSheet : é uma classe que representa uma planilha em um arquivo XLS.
- Linha : as classes XSSFRow e HSSFRow implementam essa interface.
- XSSFRow : é uma classe que representa uma linha na folha do arquivo XLSX.
- HSSFRow : é uma classe que representa uma linha na folha do arquivo XLS.
- Célula : as classes XSSFCell e HSSFCell implementam essa interface.
- XSSFCell : é uma classe que representa uma célula em uma linha do arquivo XLSX.
- HSSFCell: é uma classe que representa uma célula em uma linha do arquivo XLS.
Operação de leitura / gravação-
Para o nosso exemplo, consideraremos abaixo o formato de arquivo do Excel fornecido
Ler dados do arquivo Excel
Exemplo completo: aqui estamos tentando ler dados do Excel no Selenium:
package 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.Row;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 void readExcel (String filePath, String fileName, String sheetName) throws IOException {// Cria um objeto da classe File para abrir o arquivo xlsxArquivo arquivo = novo arquivo (filePath + "\\" + fileName);// Cria um objeto da classe FileInputStream para ler o arquivo excelFileInputStream inputStream = new FileInputStream (arquivo);Workbook guru99Workbook = null;// Encontre a extensão do arquivo dividindo o nome do arquivo em substring e obtendo apenas o nome da extensãoString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verifique a condição se o arquivo é um arquivo xlsxif (fileExtensionName.equals (". xlsx")) {// Se for um arquivo xlsx, crie o objeto da classe XSSFWorkbookguru99Workbook = novo XSSFWorkbook (inputStream);}// Verifique a condição se o arquivo é um arquivo xlselse if (fileExtensionName.equals (". xls")) {// Se for um arquivo xls, crie o objeto da classe HSSFWorkbookguru99Workbook = novo HSSFWorkbook (inputStream);}// Leia a planilha dentro da pasta de trabalho por seu nomeFolha guru99Sheet = guru99Workbook.getSheet (sheetName);// Encontre o número de linhas no arquivo excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Crie um loop sobre todas as linhas do arquivo excel para lê-lopara (int i = 0; iObservação: não estamos usando a estrutura Testng aqui. Execute a classe como um aplicativo Java usando a função read excel no Selenium conforme mostrado no exemplo acima.
Grave dados em arquivo Excel
Exemplo completo: aqui estamos tentando gravar dados de um arquivo do Excel adicionando uma nova linha no arquivo do Excel
package excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) throws IOException {// Cria um objeto da classe File para abrir o arquivo xlsxArquivo arquivo = novo arquivo (filePath + "\\" + fileName);// Cria um objeto da classe FileInputStream para ler o arquivo excelFileInputStream inputStream = new FileInputStream (arquivo);Workbook guru99Workbook = null;// Encontre a extensão do arquivo dividindo o nome do arquivo em substring e obtendo apenas o nome da extensãoString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verifique a condição se o arquivo é um arquivo xlsxif (fileExtensionName.equals (". xlsx")) {// Se for um arquivo xlsx, crie o objeto da classe XSSFWorkbookguru99Workbook = novo XSSFWorkbook (inputStream);}// Verifique a condição se o arquivo é um arquivo xlselse if (fileExtensionName.equals (". xls")) {// Se for um arquivo xls, crie o objeto da classe XSSFWorkbookguru99Workbook = novo HSSFWorkbook (inputStream);}// Leia a planilha do excel por nome da planilhaSheet sheet = guru99Workbook.getSheet (sheetName);// Obtenha a contagem atual de linhas no arquivo excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Pega a primeira linha da folhaLinha linha = folha.getRow (0);// Cria uma nova linha e anexa-a no final da folhaLinha newRow = sheet.createRow (rowCount + 1);// Cria um loop sobre a célula da linha recém-criadapara (int j = 0; jManipulação do Excel usando JXL API
JXL também é outro jar famoso para ler arquivos do Excel em Java e escrever arquivos. Hoje em dia, o POI é usado na maioria dos projetos, mas antes do POI, JXL era apenas uma API Java para manipulação do Excel. É uma API muito pequena e simples para leitura do Excel no Selenium.
DICAS: Minha sugestão é não usar JXL em nenhum novo projeto porque a biblioteca não está em desenvolvimento ativo desde 2010 e falta o recurso em comparação com a API POI.
Baixe JXL:
Se você deseja trabalhar com JXL, você pode baixá-lo neste link
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Você também pode obter um exemplo de demonstração dentro deste arquivo compactado para JXL.
Alguns dos recursos:
- JXL é capaz de ler arquivos Excel no Selenium para a pasta de trabalho 95, 97, 2000, XP, 2003.
- Podemos trabalhar com inglês, francês, espanhol, alemão.
- É possível copiar um gráfico e inserir imagens no Excel
Recua:
- Podemos escrever no Excel 97 e posterior apenas (não há suporte para a escrita no Excel 95).
- JXL não suporta o formato XLSX de arquivo excel.
- Gera planilha no formato Excel 2000.
Resumo:
- O arquivo Excel pode ser lido pela operação Java IO. Para isso, precisamos usar o Apache POI Jar .
- Existem dois tipos de pasta de trabalho no arquivo Excel, arquivos XLSX e XLS .
- O POI tem diferentes interfaces, pasta de trabalho, planilha, linha e célula.
- Essas interfaces são implementadas pelas classes de manipulação de arquivo XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) e XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) de manipulação de arquivo correspondentes.
- JXL é outra API para manipulação de Excel no Selenium.
- JXL não funciona com o formato XLSX do Excel.