File IO è una parte fondamentale di qualsiasi processo software. Creiamo spesso un file, lo apriamo e aggiorniamo qualcosa o lo cancelliamo nei nostri computer. Lo stesso è il caso con Selenium Automation. Abbiamo bisogno di un processo per manipolare i file con Selenium.
Java ci fornisce diverse classi per la manipolazione dei file con Selenium. In questo tutorial, impareremo come leggere e scrivere su file Excel con l'aiuto del pacchetto Java IO e della libreria POI Apache.
Apache POI in selenio
L' Apache POI in Selenium è un'API ampiamente utilizzata per i test basati sui dati sul selenio. È una libreria di POI scritta in Java che fornisce agli utenti un'API per la manipolazione di documenti Microsoft come .xls e .xlsx. Gli utenti possono facilmente creare, modificare e leggere / scrivere in file Excel. POI sta per "Poor Obfuscation Implementation".
- Come gestire il file Excel utilizzando POI (Maven POM Dependency)
- Classi e interfacce in POI
- Operazione di lettura / scrittura
- Leggi i dati dal file Excel
- Scrivi i dati su un file Excel
- Manipolazione di Excel utilizzando l'API JXL
Esportazione di Excel
Come gestire il file Excel utilizzando POI (Maven POM Dependency)
Per leggere e scrivere file Excel in Java, Apache fornisce una libreria molto famosa di POI. Questa libreria è in grado di leggere e scrivere file in formato XLS e XLSX di Excel.
Per leggere i file XLS , viene fornita un'implementazione HSSF dalla libreria POI.
Per leggere XLSX, l' implementazione XSSF della libreria POI sarà la scelta. Studiamo queste implementazioni in dettaglio.
Se stai usando Maven nel tuo progetto, la dipendenza Maven sarà
org.apache.poi poi 4.1.1
Oppure puoi semplicemente scaricare l'ultima versione dei barattoli POI da http://poi.apache.org/download.html e scaricare l'ultimo file zip
Quando scarichi il file zip per questo jar, devi decomprimerlo e aggiungere questi tutti i jar al percorso di classe del tuo progetto.
Classi e interfacce in POI:

Di seguito è riportato un elenco di diverse interfacce Java e classi in POI per la lettura di file XLS e XLSX-
- Cartella di lavoro : le classi XSSFWorkbook e HSSFWorkbook implementano questa interfaccia.
- XSSFWorkbook : è una rappresentazione di classe del file XLSX.
- HSSFWorkbook : è una rappresentazione di classe del file XLS.
- Foglio : le classi XSSFSheet e HSSFSheet implementano questa interfaccia.
- XSSFSheet : è una classe che rappresenta un foglio in un file XLSX.
- HSSFSheet : è una classe che rappresenta un foglio in un file XLS.
- Riga : le classi XSSFRow e HSSFRow implementano questa interfaccia.
- XSSFRow : è una classe che rappresenta una riga nel foglio del file XLSX.
- HSSFRow : è una classe che rappresenta una riga nel foglio del file XLS.
- Cella : le classi XSSFCell e HSSFCell implementano questa interfaccia.
- XSSFCell : è una classe che rappresenta una cella in una riga del file XLSX.
- HSSFCell: è una classe che rappresenta una cella in una riga del file XLS.
Operazione di lettura / scrittura
Per il nostro esempio, considereremo di seguito il formato di file Excel indicato
Leggi i dati dal file Excel
Esempio completo: qui stiamo cercando di leggere i dati da Excel in selenio:
pacchetto 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) genera IOException {// Crea un oggetto della classe File per aprire il file xlsxFile file = nuovo file (filePath + "\\" + fileName);// Crea un oggetto della classe FileInputStream per leggere il file ExcelFileInputStream inputStream = nuovo FileInputStream (file);Cartella di lavoro guru99Workbook = null;// Trova l'estensione del file dividendo il nome del file nella sottostringa e ottenendo solo il nome dell'estensioneString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Controlla la condizione se il file è xlsxif (fileExtensionName.equals (". xlsx")) {// Se è un file xlsx, crea l'oggetto della classe XSSFWorkbookguru99Workbook = nuovo XSSFWorkbook (inputStream);}// Controlla la condizione se il file è xlsaltrimenti if (fileExtensionName.equals (". xls")) {// Se è un file xls, crea l'oggetto della classe HSSFWorkbookguru99Workbook = nuovo HSSFWorkbook (inputStream);}// Leggi il foglio all'interno della cartella di lavoro in base al suo nomeFoglio guru99Sheet = guru99Workbook.getSheet (sheetName);// Trova il numero di righe nel file excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Crea un ciclo su tutte le righe del file excel per leggerlofor (int i = 0; iNota: qui non stiamo usando il framework Testng. Esegui la classe come applicazione Java utilizzando la funzione read excel in Selenium come mostrato nell'esempio sopra.
Scrivi i dati su un file Excel
Esempio completo: qui stiamo cercando di scrivere dati dal file Excel aggiungendo una nuova riga nel file Excel
pacchetto 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) genera IOException {// Crea un oggetto della classe File per aprire il file xlsxFile file = nuovo file (filePath + "\\" + fileName);// Crea un oggetto della classe FileInputStream per leggere il file ExcelFileInputStream inputStream = nuovo FileInputStream (file);Cartella di lavoro guru99Workbook = null;// Trova l'estensione del file dividendo il nome del file nella sottostringa e ottenendo solo il nome dell'estensioneString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Controlla la condizione se il file è xlsxif (fileExtensionName.equals (". xlsx")) {// Se è un file xlsx, crea l'oggetto della classe XSSFWorkbookguru99Workbook = nuovo XSSFWorkbook (inputStream);}// Controlla la condizione se il file è xlsaltrimenti if (fileExtensionName.equals (". xls")) {// Se è un file xls, crea l'oggetto della classe XSSFWorkbookguru99Workbook = nuovo HSSFWorkbook (inputStream);}// Leggi il foglio Excel in base al nome del foglioFoglio foglio = guru99Workbook.getSheet (sheetName);// Ottieni il conteggio corrente delle righe nel file excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Ottieni la prima riga dal foglioRiga riga = sheet.getRow (0);// Crea una nuova riga e aggiungila all'ultimo foglioRiga newRow = sheet.createRow (rowCount + 1);// Crea un ciclo sulla cella della riga appena creatafor (int j = 0; j
Manipolazione di Excel utilizzando l'API JXL
JXL è anche un altro famoso jar per leggere file Excel in Java e scrivere file. Al giorno d'oggi, POI viene utilizzato nella maggior parte dei progetti, ma prima di POI, JXL era solo l'API Java per la manipolazione di Excel. È un'API molto piccola e semplice per la lettura di Excel in Selenium.
SUGGERIMENTI: Il mio suggerimento è di non utilizzare JXL in nessun nuovo progetto perché la libreria non è in sviluppo attivo dal 2010 e manca della funzionalità rispetto all'API POI.
Scarica JXL:
Se vuoi lavorare con JXL, puoi scaricarlo da questo link
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Puoi anche ottenere un esempio demo all'interno di questo file zippato per JXL.
Alcune delle caratteristiche:
- JXL è in grado di leggere file Excel in Selenium per cartelle di lavoro 95, 97, 2000, XP, 2003.
- Possiamo lavorare con inglese, francese, spagnolo, tedesco.
- È possibile copiare un grafico e inserire un'immagine in Excel
Inconveniente:
- Possiamo scrivere solo Excel 97 e versioni successive (la scrittura in Excel 95 non è supportata).
- JXL non supporta il formato XLSX del file Excel.
- Genera foglio di calcolo in formato Excel 2000.
Sommario:
- Il file Excel può essere letto dall'operazione Java IO. Per questo, dobbiamo usare Apache POI Jar .
- Esistono due tipi di cartella di lavoro nel file Excel, nei file XLSX e XLS .
- POI ha diverse interfacce cartella di lavoro, foglio, riga, cella.
- Queste interfacce sono implementate dalle classi di manipolazione dei file XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) e XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) corrispondenti.
- JXL è un'altra API per la gestione di Excel in Selenium.
- JXL non può funzionare con il formato XLSX di Excel.