基于Java+Selenium的WebUI自动化测试框架(十)-----读取Excel文件(JXL)
之前,我们使用了读取XML文件的方式来实现页面元素的读取,并做成了基础页面类。下面,我们来进行一些扩展,通过Excel来读取页面元素。
Excel的使用,大多数人应该都不陌生。那么Java读取Excel的方式主要有两种,这两种分别使用的是不同的jar包来实现。本篇我们来介绍其中的一种,即使用JXL的jar包,实现Excel文件的读取。
在项目中导入jar包:jxl-2.6.12.jar 下载地址:https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl/2.6.12
package webui.xUtils; import java.io.File;
import org.testng.Reporter; import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook; public class ExcelReadJXL {
/**
*jxl读取Excel
*指定文档路径及名称
* 指定开始及结束行,开始及结束列
* @param sheet_name 为sheet工作表名称,也可以用整型数字,从0开始。
* @param start_row 开始行,0开始
* @param end_row 结束行,0开始
* @param start_col 开始列,0开始
* @param end_col 结束列,0开始
* @param sourcefile .xls文件路径
* @return Object[][]
*/
private static logUtil log; public static Object[][] caseDataExcel(String sheet_name,int start_row,int end_row,int start_col,int end_col,String sourcefile){
String cell_value = null;
Cell cell = null;
int row_length = end_row - start_row +1;
int col_length = end_col - start_col +1;
String [][] testcase_data = new String [row_length][col_length];
Workbook testcase_data_book = null;
try {
testcase_data_book = Workbook.getWorkbook(new File(sourcefile));
Sheet testcase_data_sheet = testcase_data_book.getSheet(sheet_name);
//判断输入的数值是否超出范围值
if (end_row-start_row+1>row_length) {
log.error("选择的行数超出实际数据范围!请修改起始结束行数..");
Reporter.log("选择的行数超出实际数据范围!请修改起始结束行数..");
}
if (end_col-start_col+1>col_length) {
log.error("选择的数据列数超出实际数据范围内!请修改起始结束列数..");
Reporter.log("选择的数据列数超出实际数据范围内!请修改起始结束列数..");
}
//整体思想为:按每行为一组数据进行读取
//外循环--行数
for(int row = start_row,i = 0;row <= end_row || i < testcase_data.length ; row++,i++) {
//单独一行时,读取每一列的数据
//内循环--列数
for(int col = start_col,j = 0;col <= end_col || j < col_length ; col++,j++) {
cell = testcase_data_sheet.getCell(col,row);
cell_value = cell.getContents();
testcase_data[i][j] = cell_value;
}
}
}catch (Exception e) {
e.printStackTrace();
}
// log.info("读取Excel数据完成!");
Reporter.log("读取Excel数据完成!");
return testcase_data;
}
//读取全部sheet页数据
public static Object[][] case_data_excel_jxl(String sheet_name,String sourcefile){
String cell_value = null;
Cell cell = null;
String[][] testcase_data = null;
Workbook testcase_data_book = null;
try {
testcase_data_book = Workbook.getWorkbook(new File(sourcefile));
Sheet testcase_data_sheet = testcase_data_book.getSheet(sheet_name);
int rows = testcase_data_sheet.getRows();
int cols = testcase_data_sheet.getColumns();
testcase_data = new String[rows][cols];
//整体思想仍然是按行获取
//外循环--行数
for(int i = 0 ; i < rows ; i++) {
//内循环--列数,取每一行中每一列的数据
for(int j = 0 ; j < cols ; j++) {
//数据形式为(列号,行号)
cell = testcase_data_sheet.getCell(j, i);
cell_value = cell.getContents();
//存入字符串数组的形式为(行号,列号)
testcase_data[i][j] = cell_value;
}
}
}catch (Exception e) {
e.printStackTrace();
}
return testcase_data;
}
}
从上面的代码可以看到,使用JXL的jar包来完成Excel的读取是相对简单的。主要的思想就是在指定行/列的范围,然后使用双循环进行遍历,从而达到读取数据的目的。
但是,使用JXL读取是通常意义上的读取Excel的内容(即我知道我需要读取的范围是哪些)。我们在使用自动化框架时,希望是按需读取(即按照固定的数据结构格式来读取),如果非要指定行/列的具体值,反而是舍近求远了(数据太多了,我不知道从哪里开始读)。
如何解决这个问题,我们将在后续讨论。
基于Java+Selenium的WebUI自动化测试框架(十)-----读取Excel文件(JXL)的更多相关文章
- 基于Java+Selenium的WebUI自动化测试框架(十四)-----使用TestNG的Sample
到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当 ...
- 基于Java+Selenium的WebUI自动化测试框架(十二)-----读取Excel文件(POI)(2)
上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private stati ...
- 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器
对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是, ...
- 基于Java+Selenium的WebUI自动化测试框架(八)-----读取元素(XML文件)
我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果 ...
- 基于Java+Selenium的WebUI自动化测试框架(六)---浏览器初始化
本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.se ...
- 基于Java+Selenium的WebUI自动化测试框架(九)-----基础页面类(BasePage)
上篇我们写了java读取xml文件的类,实现了可以从xml文件读取元素的方式.那么,接下来我们需要考虑一个问题.我们拿了这些元素之后怎么去操作呢? 先来看看我们手工测试的时候是怎么进行的. 双击浏览器 ...
- 基于Java+Selenium的WebUI自动化测试框架(十一)-----读取Excel文件(POI)(1)
上一篇说了利用JXL的jar包来读取Excel的代码.在Java中,还可以用另外一种jar包来读取Excel的内容,那就是Apache的POI. 这里和之前一样,需要导入POI的jar包,建议导入这三 ...
- 基于Java+Selenium的WebUI自动化测试框架(十三)-----基础页面类BasePage(Excel)
前面,我们讲了如何使用POI进行Excel的“按需读取”.根据前面我们写的BasePageX,我们可以很轻松的写出来基于这个“按需读取”的BasePage. package webui.xUtils; ...
- 基于Java+Selenium的WebUI自动化测试框架(五)------页面操作实现类
在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportn ...
随机推荐
- 使用Termux,在手机上做nodejs编程,运行nodejs程序。
如果你是一名nodejs开发者,是否想过以下问题:在手机上运行nodejs程序?用手机当nodejs服务器?在手机上做nodejs编程?YES!使用Termux,以上都可以做到! 下面展示如何实现这个 ...
- nginx+consul-template+consul实现自动负载均衡
所需工具:工具 下载地址 本文使用版本consul https://www.consul.io/downloads.html consul_1.0.7_linux_amd64.zipconsul-te ...
- 高级UI-画板Canvas
Canvas可以用来绘制直线.点.几何图形.曲线.Bitmap.圆弧等等,做出很多很棒的效果,例如QQ的消息气泡就是使用Canvas画的 Canvas中常用的方法 初始化参数 Paint paint ...
- 七、spring生命周期之初始化和销毁方法
一.通过@Bean指定初始化和销毁方法 在以往的xml中,我们是这样配置的 <bean id="exampleInitBean" class="examples.E ...
- [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端
gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...
- 关于类视图选择继承APIView还是工具视图(ListAPIView、CreateAPIView等等)
APIView使用方法,直接继承APIView,get或者post请求.方法很简单1.先获取到要操作的数据,然后把数据放到serializer中序列化或者反序列化,最后return返回值(记得.dat ...
- 3. 键值对RDD
键值对RDD是Spark中许多操作所需要的常见数据类型.除了在基础RDD类中定义的操作之外,Spark为包含键值对类型的RDD提供了一些专有的操作在PairRDDFunctions专门进行了定义.这些 ...
- IP核——FIFO
一.Quartus 1.打开Quartus ii,点击Tools---MegaWizard Plug-In Manager 2.弹出创建页面,选择Creat a new custom megafunc ...
- vscode插件之背景插件(background)
1.在插件tab搜索background 2.打开vscode的配置页 { "background.useDefault": false, "background.cus ...
- Flutter裁剪图片
最近在学习中需要用到裁剪图片,记录一下解决方法 思路: 使用canvas的drawImageRect()方法,对Image进行裁剪,这里的Image需要 'dart:ui' 库中的Image. 1. ...