《手把手教你》系列技巧篇(六十六)-java+ selenium自動化測試 – 讀寫excel文件 – 上篇(詳細教程)

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的版本和其他的不匹配。