File IO er en kritisk del av enhver programvareprosess. Vi oppretter ofte en fil, åpner den og oppdaterer noe eller sletter den i datamaskinene våre. Det samme er tilfellet med Selenium Automation. Vi trenger en prosess for å manipulere filer med Selen.
Java gir oss forskjellige klasser for filmanipulering med selen. I denne opplæringen skal vi lære hvordan vi kan lese og skrive på Excel-filer ved hjelp av Java IO-pakken og Apache POI-biblioteket.
Apache POI i Selen
Den Apache POI i Selen er et mye brukt API for selendatadrevet testing. Det er et POI-bibliotek skrevet i Java som gir brukerne et API for å manipulere Microsoft-dokumenter som .xls og .xlsx. Brukere kan enkelt opprette, endre og lese / skrive i Excel-filer. POI står for "Poor Implementation of Obfuscation."
- Hvordan håndtere Excel-filer ved hjelp av POI (Maven POM Dependency)
- Klasser og grensesnitt i interessepunkter
- Les / skriv-operasjon
- Les data fra Excel-fil
- Skriv data på Excel-fil
- Excel Manipulation ved hjelp av JXL API
Eksporterer Excel
Hvordan håndtere Excel-filer ved hjelp av POI (Maven POM Dependency)
For å lese og skrive Excel-filer i Java, gir Apache et veldig kjent biblioteks-POI. Dette biblioteket er i stand til å lese og skrive både XLS og XLSX filformat i Excel.
For å lese XLS- filer leveres en HSSF- implementering av POI-biblioteket.
For å lese XLSX vil XSSF- implementering av POI- biblioteket være valget. La oss studere disse implementeringene i detalj.
Hvis du bruker Maven i prosjektet ditt, vil Maven-avhengigheten være
org.apache.poi poi 4.1.1
Eller du kan bare laste ned den siste versjonen av POI-krukker fra http://poi.apache.org/download.html og laste ned den siste zip-filen.
Når du laster ned zip-filen for denne krukken, må du pakke den ut og legge til alle glassene i klassebanen til prosjektet.
Klasser og grensesnitt i interessepunkter:

Følgende er en liste over forskjellige Java-grensesnitt og klasser i interessepunkter for å lese XLS- og XLSX- filer-
- Arbeidsbok : XSSFWorkbook og HSSFWorkbook-klasser implementerer dette grensesnittet.
- XSSFWorkbook : Er en klasse representasjon av XLSX fil.
- HSSFWorkbook : Er en klassepresentasjon av XLS-fil.
- Ark : XSSFSheet- og HSSFSheet-klasser implementerer dette grensesnittet.
- XSSFSheet : Er en klasse som representerer et ark i en XLSX-fil.
- HSSFSheet : Er en klasse som representerer et ark i en XLS-fil.
- Rad : XSSFRow- og HSSFRow-klassene implementerer dette grensesnittet.
- XSSFRow : Er en klasse som representerer en rad i arket med XLSX-filen.
- HSSFRow : Er en klasse som representerer en rad i arket med XLS-filen.
- Celle : XSSFCell- og HSSFCell-klasser implementerer dette grensesnittet.
- XSSFCell : Er en klasse som representerer en celle i en rad med XLSX-filer.
- HSSFCell: Er en klasse som representerer en celle i en rad med XLS-filer.
Les / skriv operasjon-
For vårt eksempel vil vi vurdere nedenfor gitt Excel-filformat
Les data fra Excel-fil
Komplett eksempel: Her prøver vi å lese data fra Excel i Selen:
pakke excelExportAndFileIO;importere java.io.File;importere java.io.FileInputStream;importere java.io.IOException;importer org.apache.poi.hssf.usermodel.HSSFWorkbook;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.apache.poi.ss.usermodel.Workbook;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) kaster IOException {// Opprett et objekt av filklassen for å åpne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opprett et objekt av FileInputStream-klassen for å lese Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbeidsbok guru99Arbeidsbok = null;// Finn filtypen ved å dele filnavnet i substring og få bare navnet på utvidelsenStreng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Sjekk tilstanden hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er xlsx-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Sjekk tilstanden hvis filen er xls-filannet hvis (fileExtensionName.equals (". xls")) {// Hvis det er xls-fil, opprett deretter objektet til HSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Les arket inne i arbeidsboken ved navnArk guru99Sheet = guru99Workbook.getSheet (arknavn);// Finn antall rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Lag en sløyfe over alle radene i Excel-filen for å lese denfor (int i = 0; iMerk: Vi bruker ikke Testng-rammeverket her. Kjør klassen som Java-applikasjon ved hjelp av funksjonsles excel i Selen som vist i eksempelet ovenfor.
Skriv data på Excel-fil
Komplett eksempel: Her prøver vi å skrive data fra Excel-fil ved å legge til en ny rad i Excel-fil
pakke excelExportAndFileIO;importere java.io.File;importere java.io.FileInputStream;importere java.io.FileOutputStream;importere java.io.IOException;importer org.apache.poi.hssf.usermodel.HSSFWorkbook;importer org.apache.poi.ss.usermodel.Cell;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.apache.poi.ss.usermodel.Workbook;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) kaster IOException {// Opprett et objekt av filklassen for å åpne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opprett et objekt av FileInputStream-klassen for å lese Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbeidsbok guru99Arbeidsbok = null;// Finn filtypen ved å dele filnavnet i substring og få bare navnet på utvidelsenStreng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Sjekk tilstanden hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er xlsx-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Sjekk tilstanden hvis filen er xls-filannet hvis (fileExtensionName.equals (". xls")) {// Hvis det er en xls-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Les Excel-ark etter arknavnArkark = guru99Workbook.getSheet (arknavn);// Få gjeldende antall rader i Excel-filenint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Få den første raden fra arketRadrekke = ark.getRow (0);// Opprett en ny rad og legg den til sist på arketRad newRow = sheet.createRow (rowCount + 1);// Lag en sløyfe over cellen til nyopprettede radfor (int j = 0; j
Excel Manipulation ved hjelp av JXL API
JXL er også en annen berømt krukke for å lese Excel-filer i Java og skrive filer. I dag brukes POI i de fleste prosjektene, men før POI var JXL bare Java API for Excel-manipulering. Det er en veldig liten og enkel API for excel-lesing i Selen.
TIPS: Mitt forslag er å ikke bruke JXL i noe nytt prosjekt fordi biblioteket ikke er i aktiv utvikling fra 2010 og mangel på funksjonen sammenlignet med POI API.
Last ned JXL:
Hvis du vil jobbe med JXL, kan du laste den ned fra denne lenken
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Du kan også få demoeksempel i denne zip-filen for JXL.
Noen av funksjonene:
- JXL kan lese Excel-filer i Selenium for 95, 97, 2000, XP, 2003 arbeidsbok.
- Vi kan jobbe med engelsk, fransk, spansk, tysk.
- Kopiering av et diagram og bildeinnsetting i Excel er mulig
Ulempe:
- Vi kan bare skrive Excel 97 og senere (skriving i Excel 95 støttes ikke).
- JXL støtter ikke XLSX-format for Excel-fil.
- Det genererer regneark i Excel 2000-format.
Sammendrag:
- Excel-filen kan leses ved hjelp av Java IO-operasjon. For det må vi bruke Apache POI Jar .
- Det er to typer arbeidsbok i Excel-fil, XLSX- og XLS- filer.
- POI har forskjellige grensesnitt arbeidsbok, ark, rad, celle.
- Disse grensesnitt er implementert ved tilsvarende XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) og XLSX- ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) fil manipulasjon klasser.
- JXL er et annet API for Excel-håndtering i Selen.
- JXL kan ikke fungere med XLSX-format av Excel.