《手把手教你》系列技巧篇(六十六)-java+ selenium自動化測試 – 讀寫excel文件 – 上篇(詳細教程)
- 2022 年 2 月 15 日
- 筆記
- java+selenium自動化測試
1.簡介
在自動化測試,有些我們的測試數據是放到excel文件中,尤其是在做數據驅動測試的時候,所以需要懂得如何操作獲取excel內的內容。由於java不像python那樣有直接操作Excle文件的類庫,所以我們必須藉助第三方工具:POI(基於Apache的POI類庫)。
2.常見讀寫Excel的工具類開源javaAPI
目前常見讀寫Excel的工具類開源javaAPI有兩種方式:
一個是JXL(Java Excel API) 官網地址://jexcelapi.sourceforge.net/
一個是Apache的POI(Poor Obfuscation Implementation)官網地址://poi.apache.org/
POI支持微軟的OLE2格式文件Office 2003及以下版本;同時支持微軟的OOXML(Office Open XML)標準,也就是Office 2007以上版本。JXL只能實現對Excel 2003以下版本的支持。
POI使用HSSF對象操作OLE2格式Excel,文件後綴為.xls的;使用XSSF、SXSSF對象操作OOXML格式Excel,文件後綴為.xlsx的。
對於OLE2版本的Excel,一個Sheet工作表它的行最多支持到65536行,列支持到256列;
對於OOXML版本的Excel,一個Sheet工作表它的行支持到1048576行,列支持到16384列。
3.基於Apache的POI類庫
3.1下載POI
1.打開網站//poi.apache.org/download.html,選擇下面5.2.0版本下載。如下圖所示:
2.選擇ZIP包下載。如下圖所示:
3.下載完後解壓,文件結構如下圖所示:
4.項目實戰
4.1jar文件添加
1.把POI文件添加在你Selenium當前項目的library中
先新建一個文件夾,把解壓出來的所有的xx.jar都放在新的文件夾,然後右鍵你的eclipse工程> Build path > Configure build path > 點擊lib > Add external jar,新建文件夾內所有的xxx.jar都選中。
或者,你只需要以下幾個jar文件就可以。
注意,這些jar文件不在同一個路徑,你需要到不同路徑去拷貝複製到一個新文件夾,然後把這個文件夾的所有jar文件拷貝到你eclipse項目下的Files文件夾,需要右鍵你工程,新建一個叫Files的文件夾。我的項目,採取這種方法,我不希望拷貝全部jar到項目lib中。
4.2準備Excle文件
1. 準備一個test-data.xlsx文件
桌面新建一個test-data.xlsx,然後輸入如下內容,並且把這個文件放到eclipse項目中。
4.3代碼設計
1.新建一個ReadExcel.java的文件,輸入如下代碼。
4.4參考代碼
package lessons; import java.io.File; import java.io.FileInputStream; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * @author 北京-宏哥 * * @公眾號:北京宏哥 * * 《手把手教你》系列技巧篇(六十六)-java+ selenium自動化測試 - 讀寫excel文件(詳細教程) * * 2022年2月10日 */ public class ReadExcel { public static void main(String[] args) { try{ // 指定excel的路徑 File src = new File(".\\Files\\test-data.xlsx"); // 加載文件 FileInputStream fis = new FileInputStream(src); // 加載workbook @SuppressWarnings("resource") XSSFWorkbook wb=new XSSFWorkbook(fis); //加載sheet,這裡我們只有一個sheet,默認是sheet1 XSSFSheet sh1= wb.getSheetAt(0); // 開始讀取第一行第一列的數據 System.out.println(sh1.getRow(0).getCell(0).getStringCellValue()); // 讀取第一行第二列內容 System.out.println(sh1.getRow(0).getCell(1).getStringCellValue()); // 讀取第二行第二列內容 System.out.println(sh1.getRow(1).getCell(0).getStringCellValue()); // 讀取第二行第二列內容 System.out.println(sh1.getRow(1).getCell(1).getStringCellValue()); // 獲取實際總行數 System.out.println(sh1.getPhysicalNumberOfRows()); // 獲取實際總列數 System.out.println(sh1.getPhysicalNumberOfRows()); } catch (Exception e){ System.out.println(e.getMessage()); } } }
4.5運行代碼
1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:
5.小結
小夥伴或者童鞋們在運行代碼時,可能會報錯:主要的原因是宏哥前邊的jar包內容不是很全,按照下圖導入jar包,就可以了,宏哥猜測是之前的版本低,後來升級了,導致jar包改變;還有一個原因就是POI的版本和其他的不匹配。