Excel-tietojen lukeminen/kirjoittaminen Selenium Apachen POI-kohdealueen käyttö
⚡ Älykäs yhteenveto
Excel-tiedostojen asema Selenium datalähtöiset testit, ja Apache POI on Java kirjasto, joka lukee ja kirjoittaa niitä. Alla olevat osiot käsittelevät riippuvuuksia, ydinluokkia, luku- ja kirjoitusesimerkkejä sekä JXL:ää.

Tiedoston IO on tärkeä osa mitä tahansa ohjelmistoprosessia. Luomme usein tiedoston, avaamme sen ja päivitämme jotain tai poistamme sen tietokoneistamme. Sama on asian kanssa Selenium Automaatio. Tarvitsemme prosessin tiedostojen käsittelyyn Selenium.
Java tarjoaa meille erilaisia luokkia tiedostojen käsittelyyn Selenium. Tässä opetusohjelmassa opimme, kuinka voimme lukea ja kirjoittaa kunnostautua tiedosto avulla Java IO-paketti ja Apache POI-kirjasto.
Apache POI sisään Selenium
Apache POI sisään Selenium on laajalti käytetty API Selenium datalähtöinen testausSe on POI-kirjasto, joka on kirjoitettu Java joka antaa käyttäjille APIn manipulointia varten Microsoft asiakirjoja, kuten .xls ja .xlsx. Käyttäjät voivat helposti luoda, muokata ja lukea/kirjoittaa Excel-tiedostoja. POI on lyhenne sanoista ”Poor Obfuscation Implementation” (huono obfuskaatiototeutus).
Excel-tiedoston käsittely POI:n avulla (Maven POM -riippuvuus)
POI-linkit Selenium testi alla olevaan työkirjaan.
Excel-tiedoston lukemiseen ja kirjoittamiseen JavaApache tarjoaa erittäin kuuluisan POI-kirjaston. Tämä kirjasto pystyy lukemaan ja kirjoittamaan Excelin XLS- ja XLSX-tiedostomuotoja.
XLS-tiedostojen lukemiseen POI-kirjasto tarjoaa HSSF-toteutuksen.
XLSX-tiedostojen lukemiseen valitaan POI-kirjaston XSSF-toteutus. Tarkastellaan näitä toteutuksia tarkemmin.
Jos käytät projektissasi Mavenia, Maven-riippuvuus lisätään pom.xml-tiedostoon alla olevan mukaisesti.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Versiohuomautus: 4.1.1 on alkuperäinen esimerkki; nykyiset projektit ilmoittavat poi-ooxml 5.5.1, joka vaaditaan XLSX:lle.
Tai voit yksinkertaisesti ladata uusimman version POI-purkit osoitteesta http://poi.apache.org/download.html & lataa uusin zip-tiedosto
Kun lataat tämän purkin zip-tiedoston, sinun on purettava se ja lisättävä nämä kaikki purkit projektisi luokkapolkuun.
Luokat ja käyttöliittymät POI:ssa
Seuraavassa on luettelo erilaisista Java POI-rajapinnat ja -luokat XLS- ja XLSX-tiedostojen lukemiseen, esitetty alla-
- työkirja: XSSFWorkbook- ja HSSFWorkbook-luokat toteuttavat tämän rajapinnan.
- XSSF-työkirja: On XLSX-tiedoston luokkaesitys.
- HSSF-työkirja: On XLS-tiedoston luokkaesitys.
- Arkki: XSSFSheet- ja HSSFSheet-luokat toteuttavat tämän rajapinnan.
- XSSFS-taulukko: On luokka, joka edustaa XLSX-tiedostossa olevaa taulukkoa.
- HSSF-arkki: On luokka, joka edustaa XLS-tiedostossa olevaa taulukkoa.
- Rivi: XSSFRow- ja HSSFRow-luokat toteuttavat tämän rajapinnan.
- XSSFRow: Onko luokka, joka edustaa riviä XLSX-tiedoston arkilla.
- HSSFRow: Onko luokka, joka edustaa riviä XLS-tiedoston arkilla.
- Cell: XSSFCell- ja HSSFCell-luokat toteuttavat tämän rajapinnan.
- XSSFCell: On luokka, joka edustaa solua XLSX-tiedoston rivillä.
- HSSFCell: Onko luokka, joka edustaa XLS-tiedoston rivin solua.
Lukea kirjoittaa OperaTUKSEN
Esimerkissämme tarkastelemme alla annettua Excel-tiedostomuotoa
Lue tiedot Excel-tiedostosta
Täydellinen esimerkki: Tässä yritetään lukea tietoja Excelistä 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{ //Create an object of File class to open xlsx file File file = new File(filePath+"\\"+fileName); //Create an object of FileInputStream class to read excel file FileInputStream inputStream = new FileInputStream(file); Workbook guru99Workbook = null; //Find the file extension by splitting file name in substring and getting only extension name String fileExtensionName = fileName.substring(fileName.indexOf(".")); //Check condition if the file is xlsx file if(fileExtensionName.equals(".xlsx")){ //If it is xlsx file then create object of XSSFWorkbook class guru99Workbook = new XSSFWorkbook(inputStream); } //Check condition if the file is xls file else if(fileExtensionName.equals(".xls")){ //If it is xls file then create object of HSSFWorkbook class guru99Workbook = new HSSFWorkbook(inputStream); } //Read sheet inside the workbook by its name Sheet guru99Sheet = guru99Workbook.getSheet(sheetName); //Find number of rows in excel file int rowCount = guru99Sheet.getLastRowNum()-guru99Sheet.getFirstRowNum(); //Create a loop over all the rows of excel file to read it for (int i = 0; i < rowCount+1; i++) { Row row = guru99Sheet.getRow(i); //Create a loop to print cell values in a row for (int j = 0; j < row.getLastCellNum(); j++) { //Print Excel data in console System.out.print(row.getCell(j).getStringCellValue()+"|| "); } System.out.println(); } } //Main function is calling readExcel function to read data from excel file public static void main(String...strings) throws IOException{ //Create an object of ReadGuru99ExcelFile class ReadGuru99ExcelFile objExcelFile = new ReadGuru99ExcelFile(); //Prepare the path of excel file String filePath = System.getProperty("user.dir")+"\\src\\excelExportAndFileIO"; //Call read file method of the class to read data objExcelFile.readExcel(filePath,"ExportExcel.xlsx","ExcelGuru99Demo"); } }
Huomautus: Emme käytä TestNG puitteet täällä. Suorita luokka nimellä Java Sovellus, joka käyttää toimintoa read excel in Selenium kuten yllä olevassa esimerkissä näkyy.
Konsoli tulostaa sitten jokaisen rivin solu solulta.
Kirjoita tiedot Excel-tiedostoon
Täydellinen esimerkki: Tässä yritämme kirjoittaa tietoja Excel-tiedostosta lisäämällä uuden rivin Excel-tiedostoon.
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{ //Create an object of File class to open xlsx file File file = new File(filePath+"\\"+fileName); //Create an object of FileInputStream class to read excel file FileInputStream inputStream = new FileInputStream(file); Workbook guru99Workbook = null; //Find the file extension by splitting file name in substring and getting only extension name String fileExtensionName = fileName.substring(fileName.indexOf(".")); //Check condition if the file is xlsx file if(fileExtensionName.equals(".xlsx")){ //If it is xlsx file then create object of XSSFWorkbook class guru99Workbook = new XSSFWorkbook(inputStream); } //Check condition if the file is xls file else if(fileExtensionName.equals(".xls")){ //If it is xls file then create object of XSSFWorkbook class guru99Workbook = new HSSFWorkbook(inputStream); } //Read excel sheet by sheet name Sheet sheet = guru99Workbook.getSheet(sheetName); //Get the current count of rows in excel file int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum(); //Get the first row from the sheet Row row = sheet.getRow(0); //Create a new row and append it at last of sheet Row newRow = sheet.createRow(rowCount+1); //Create a loop over the cell of newly created Row for(int j = 0; j < row.getLastCellNum(); j++){ //Fill data in row Cell cell = newRow.createCell(j); cell.setCellValue(dataToWrite[j]); } //Close input stream inputStream.close(); //Create an object of FileOutputStream class to create write data in excel file FileOutputStream outputStream = new FileOutputStream(file); //write data in the excel file guru99Workbook.write(outputStream); //close output stream outputStream.close(); } public static void main(String...strings) throws IOException{ //Create an array with the data in the same order in which you expect to be filled in excel file String[] valueToWrite = {"Mr. E","Noida"}; //Create an object of current class WriteGuru99ExcelFile objExcelFile = new WriteGuru99ExcelFile(); //Write the file using file name, sheet name and the data to be filled objExcelFile.writeExcel(System.getProperty("user.dir")+"\\src\\excelExportAndFileIO","ExportExcel.xlsx","ExcelGuru99Demo",valueToWrite); } }
Työkirja sisältää sitten liitetyn rivin.
Excel-manipulaatio JXL API:lla
JXL on myös toinen kuuluisa purkki Excel-tiedoston lukemiseen Java ja tiedostojen kirjoittaminen. Nykyään POI on käytössä useimmissa projekteissa, mutta ennen POI:ta JXL oli vain Java API Excelin käsittelyyn. Se on erittäin pieni ja yksinkertainen API Excelin lukemiseen Selenium.
VINKKI: Ehdotukseni on, ettei JXL:ää käytetä missään uusissa projekteissa, koska kirjasto ei ole aktiivisessa kehityksessä vuodesta 2010 lähtien – 2.6.12 on edelleen sen uusin julkaisu – ja ominaisuus puuttuu POI API:sta poiketen.
Lataa JXL:
Jos haluat työskennellä JXL:n kanssa, voit ladata sen tästä linkistä
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Voit myös saada demoesimerkin tästä zip-tiedostosta JXL:lle, kuten esimerkkinätracTedin sisältö alla näkyy.
Jotkut ominaisuuksista:
- JXL pystyy lukemaan Excel-tiedoston sisään Selenium 95, 97, 2000, XP, 2003 työkirjalle.
- Pystymme työskentelemään englannin, ranskan, espanjan ja saksan kielellä.
- Kaavion ja kuvan lisäys Excelissä on mahdollista
Haittapuoli:
- Voimme kirjoittaa vain Excel 97:ssä ja uudemmissa (Excel 95:ssä kirjoittamista ei tueta).
- JXL ei tue excel-tiedoston XLSX-muotoa.
- Se luo laskentataulukon Excel 2000 -muodossa.










