您的位置:首页 > 运维架构 > Apache

关键字驱动框架入门教程-4-搭建数据引擎-用Apache POI去读取数据

2018-02-01 17:47 761 查看
       在上面一篇文章,我们定义了几个动作关键字,并把它们放入到DataEngine的Excel表格里。现在我们想在Selenium自动化测试脚本中去识别Excel中关键字,那么我们就需要利用Java去读取excel的数据,所以,这篇,我们主要来讲如何使用开源jar包工具—Apache POI来读取Excel文件数据。

 

搭建Data Engine—利用Apache POI

       我们需要一种方式去打开Excel和读取里面的数据,并且拿到Selenium自动化测试脚本中。为了实现这个场景,我这里使用Apache POI 类库,Apache POI是一个允许你使用Java去读取和创建和编辑微软的Excel文件格式的一种强大的工具包。我们下面要用到相关类或者方法去读取Excel数据,这些类或者方法是放在‘org.apache.poi.hssf.usermodel’包下。

 

从Excel中读取数据

 

1)下载Apache POIjar包文件,并添加到项目的lib类库.点击这里下载

2)下载后解压,我们把poi-3.17.jar等添加到项目类库

 这些包需要添加到项目的librarys中去。



3)新建一个包,名称为utility。

4)在utility包下,新建一个类文件,名称为ExcelUtils.java

5)在ExcelUtils.java,输入以下内容

ExcelUtils.java

package utility;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;

public class ExcelUtils {

private static XSSFSheet ExcelWSheet;
private static XSSFWorkbook ExcelWBook;
private static XSSFCell Cell;

// 设置Excel文件路径,方便读取到文件
public static void setExcelFile(String Path, String SheetName) throws IOException {

FileInputStream ExcelFile = new FileInputStream(Path);
ExcelWBook = new XSSFWorkbook(ExcelFile);
ExcelWSheet = ExcelWBook.getSheet(SheetName);
}

// 读取Excel文件单元格数据
public static String getCellData(int RowNum, int ColNum) throws Exception{
Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
String CellData = Cell.getStringCellValue();
return CellData;
}

}


       下面,我们来修改DriverScript.java文件里面的内容,利用上面写的ExcelUtils类文件,我们在一个一个来读取进行测试。

package executionEngine;
import config.ActionsKeywords;
import utility.ExcelUtils;

/**
* create by Anthony on 2018/1/30
*/
public class DriverScript {

public static void main(String[] args) throws Exception {
String excel_path = "C:\\Users\\ydbj0140\\IdeaProjects\\SeleniumKeywordFramework\\src\\dataEngine\\dataEngine.xlsx";
// 加载读取excel文件
ExcelUtils.setExcelFile(excel_path, "Test Steps");

for (int iRow=1;iRow<=9;iRow++){

String sActionKeyword = ExcelUtils.getCellData(iRow, 3);

// 和excel文件中关键字进行对比
if(sActionKeyword.equals("openBrowser")){
// 如果Excel文件中存在openBrowser的关键字就会调用openBrowser()方法,进行相关操作;下面其他关键字同理。
ActionsKeywords.openBrowser();
} else if(sActionKeyword.equals("openUrl")){
ActionsKeywords.openUrl();
} else if(sActionKeyword.equals("click_Login_link")){
ActionsKeywords.click_Login_link();
} else if(sActionKeyword.equals("input_Username")){
ActionsKeywords.input_Username();
} else if(sActionKeyword.equals("input_Password")){
ActionsKeywords.input_Password();
} else if(sActionKeyword.equals("click_Submit")){
ActionsKeywords.click_Submit();
} else if(sActionKeyword.equals("closeBrowser")){
ActionsKeywords.closeBrowser();
}

}

}
}

       测试结果:通过,可以看到登录百度的效果(这里登录后提示输入验证码不是本系列解决的重点,这个问题不用管)。

项目代码结构如下图



       到这里,我们已经实现了一个关键字驱动框架的骨架部分,关键字驱动框架的重点思路就是如何从Excel文件中读取和判断关键字,所以,所有的测试用例都可以写入到Excel文件。但是目前这个框架就是一个草稿,接下来我们要去给这个框架增加一点东西,变得丰满一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: