File IO är en viktig del av alla programvaruprocesser. Vi skapar ofta en fil, öppnar den och uppdaterar något eller tar bort den i våra datorer. Samma är fallet med Selenium Automation. Vi behöver en process för att manipulera filer med Selen.
Java ger oss olika klasser för filmanipulation med selen. I den här handledningen ska vi lära oss hur vi kan läsa och skriva på Excel-filer med hjälp av Java IO-paketet och Apache POI-biblioteket.
Apache IP i selen
Den Apache POI i Selenium är en allmänt använd API för selen uppgifter baserad testning. Det är ett POI-bibliotek skrivet i Java som ger användarna ett API för att manipulera Microsoft-dokument som .xls och .xlsx. Användare kan enkelt skapa, ändra och läsa / skriva i Excel-filer. POI står för "Poor Implementation Implementation."
- Så här hanterar du Excel-filer med POI (Maven POM Dependency)
- Klasser och gränssnitt i intressepunkter
- Läsning / skrivning
- Läs data från Excel-filen
- Skriv data i Excel-fil
- Excel Manipulation med JXL API
Exporterar Excel
Så här hanterar du Excel-filer med POI (Maven POM Dependency)
För att läsa och skriva Excel-filer i Java, erbjuder Apache en mycket känd intressepunkt för biblioteket. Detta bibliotek kan tillräckligt för att läsa och skriva både XLS- och XLSX- filformat i Excel.
För att läsa XLS- filer tillhandahålls en HSSF- implementering av POI-biblioteket.
För att läsa XLSX kommer XSSF- implementering av POI- biblioteket att vara valet. Låt oss studera dessa implementeringar i detalj.
Om du använder Maven i ditt projekt kommer Maven-beroendet att vara
org.apache.poi poi 4.1.1
Eller så kan du helt enkelt ladda ner den senaste versionen av POI-burkar från http://poi.apache.org/download.html och ladda ner den senaste zip-filen.
När du laddar ner zip-filen för den här burken måste du packa upp den och lägga till alla burkar i klassvägen för ditt projekt.
Klasser och gränssnitt i intressepunkter:

Nedan följer en lista över olika Java-gränssnitt och klasser i POI för läsning av XLS- och XLSX- filer-
- Arbetsbok : XSSFWorkbook- och HSSFWorkbook-klasser implementerar detta gränssnitt.
- XSSFWorkbook : Är en klassrepresentation av XLSX-filen.
- HSSFWorkbook : Är en klassrepresentation av XLS-filen.
- Blad : Klasserna XSSFSheet och HSSFSheet implementerar detta gränssnitt.
- XSSFSheet : Är en klass som representerar ett ark i en XLSX-fil.
- HSSFSheet : Är en klass som representerar ett ark i en XLS-fil.
- Rad : XSSFRow och HSSFRow klasser implementerar detta gränssnitt.
- XSSFRow : Är en klass som representerar en rad i arket i XLSX-filen.
- HSSFRow : Är en klass som representerar en rad i arket med XLS-filen.
- Cell : XSSFCell- och HSSFCell-klasser implementerar detta gränssnitt.
- XSSFCell : Är en klass som representerar en cell i en rad med XLSX-filen.
- HSSFCell: Är en klass som representerar en cell i en rad med XLS-filen.
Läs- / skrivoperation-
För vårt exempel kommer vi att överväga det angivna Excel-filformatet nedan
Läs data från Excel-filen
Komplett exempel: Här försöker vi läsa data från Excel i Selen:
paket excelExportAndFileIO;importera java.io.File;importera java.io.FileInputStream;importera java.io.IOException;importera org.apache.poi.hssf.usermodel.HSSFWorkbook;importera org.apache.poi.ss.usermodel.Row;importera org.apache.poi.ss.usermodel.Sheet;importera org.apache.poi.ss.usermodel.Workbook;importera org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klass ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) kastar IOException {// Skapa ett objekt av filklass för att öppna xlsx-filenFilfil = ny fil (filePath + "\\" + filnamn);// Skapa ett objekt av FileInputStream-klassen för att läsa Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbetsbok guru99Workbook = null;// Hitta filtillägget genom att dela upp filnamnet i substring och bara få tilläggsnamnetSträng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontrollera tillståndet om filen är xlsx-filom (fileExtensionName.equals (". xlsx")) {// Om det är xlsx-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontrollera tillståndet om filen är xls-filannars om (fileExtensionName.equals (". xls")) {// Om det är xls-fil skapar du objekt av HSSFWorkbook-klassguru99Workbook = ny HSSFWorkbook (inputStream);}// Läs arket i arbetsboken med dess namnSheet guru99Sheet = guru99Workbook.getSheet (sheetName);// Hitta antal rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Skapa en slinga över alla raderna i Excel-filen för att läsa denför (int i = 0; iObs! Vi använder inte Testng-ramverket här. Kör klassen som Java-applikation med funktionen read excel i Selen som visas i exemplet ovan.
Skriv data i Excel-fil
Komplett exempel: Här försöker vi skriva data från Excel-fil genom att lägga till en ny rad i Excel-fil
paket excelExportAndFileIO;importera java.io.File;importera java.io.FileInputStream;importera java.io.FileOutputStream;importera java.io.IOException;importera org.apache.poi.hssf.usermodel.HSSFWorkbook;importera org.apache.poi.ss.usermodel.Cell;importera org.apache.poi.ss.usermodel.Row;importera org.apache.poi.ss.usermodel.Sheet;importera org.apache.poi.ss.usermodel.Workbook;importera org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klass WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) kastar IOException {// Skapa ett objekt av filklass för att öppna xlsx-filenFilfil = ny fil (filePath + "\\" + filnamn);// Skapa ett objekt av FileInputStream-klassen för att läsa Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbetsbok guru99Workbook = null;// Hitta filtillägget genom att dela upp filnamnet i substring och bara få tilläggsnamnetSträng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontrollera tillståndet om filen är xlsx-filom (fileExtensionName.equals (". xlsx")) {// Om det är xlsx-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontrollera tillståndet om filen är xls-filannars om (fileExtensionName.equals (". xls")) {// Om det är xls-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Läs excel-ark efter arknamnSheet sheet = guru99Workbook.getSheet (sheetName);// Få det aktuella antalet rader i Excel-filenint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Få första raden från arketRadrad = ark.getRow (0);// Skapa en ny rad och lägg till den senast på arketRad newRow = sheet.createRow (rowCount + 1);// Skapa en slinga över cellen i den nyskapade radenför (int j = 0; j
Excel Manipulation med JXL API
JXL är också en annan känd burk för att läsa Excel-filer i Java och skriva filer. Numera används POI i de flesta av projekten, men före POI var JXL bara Java API för Excel-manipulation. Det är ett väldigt litet och enkelt API för excel-läsning i Selen.
TIPS: Mitt förslag är att inte använda JXL i något nytt projekt eftersom biblioteket inte är i aktiv utveckling från 2010 och brist på funktion jämfört med POI API.
Ladda ner JXL:
Om du vill arbeta med JXL kan du ladda ner det från den här länken
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Du kan också få ett demoexempel i den här zip-filen för JXL.
Några av funktionerna:
- JXL kan läsa Excel-filer i Selenium för 95, 97, 2000, XP, 2003 arbetsbok.
- Vi kan arbeta med engelska, franska, spanska, tyska.
- Kopiering av ett diagram och en bildinsättning i Excel är möjlig
Nackdel:
- Vi kan bara skriva Excel 97 och senare (skrivning i Excel 95 stöds inte).
- JXL stöder inte XLSX-format för Excel-fil.
- Det genererar kalkylblad i Excel 2000-format.
Sammanfattning:
- Excel-filen kan läsas med Java IO-operation. För det måste vi använda Apache POI Jar .
- Det finns två typer av en arbetsbok i Excel-filen, XLSX- och XLS- filer.
- Intressepunkter har olika gränssnittsarbetsbok, ark, rad, cell.
- Dessa gränssnitt implementeras av motsvarande filmanipulationsklasser för XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) och XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL är ett annat API för Excel-hantering i Selen.
- JXL kan inte fungera med XLSX-format av Excel.