基于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 ...
随机推荐
- Asp.net SignalR 让实时通讯变得如此简单
巡更项目中,需要发送实时消息,以及需要任务开始提醒,于是便有机会接触到SignalR,在使用过程中,发现用SignalR实现通信非常简单,下面我思明将从三个方面分享一下: 一.SignalR是什么 A ...
- SpringBoot读取properties中的属性值
1.在application.properties中添加以下内容: learn.blog.name=hello learn.blog.title=千回教育系统 2.新增属性关联的类: package ...
- springboot实战日记(一)数据库基本信息
摘要:基于spring boot的后端实现,开发一个微信小程序点餐系统,主要是写写思路和遇到的问题以及分享读到的好文章. 项目分析: 1.角色划分,就是开有什么人使用这个系统,买家(手机端),卖家(p ...
- KAFA 监测| Kafka监测的方法和工具
1.目标 在我们上一篇Kafka教程中,我们讨论了Kafka Tools.今天,我们将看到Kafka Monitoring.在此,我们将学习如何监控Apache Kafka的概念.此外,我们将涵盖在故 ...
- Java开发笔记(一百三十三)Swing的菜单
传统的桌面程序基本是对某种类型的文件进行加工,例如Window自带的记事本用来读写文本文件,自带的画图程序用来查看和修改位图文件.为了方便用户切换各种操作,这些程序在窗口顶端放了一排菜单栏,单击菜单栏 ...
- ModelSerializer组件
ModelSerializer组件 一 .DRF模型类序列化器 如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一 ...
- 【LEETCODE】40、1051. Height Checker
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- 一天一个Linux命令,第三天cat命令
命令:cat (中文猫的意思) 解释:cat命令连接文件并打印到标准输出设备上(如显示器),cat经常用来显示文件的内容 注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容. ...
- Vue学习笔记(20190722)
- quartz2.3.0(十)xml配置方式定义quartz定时任务
1.新增pom依赖 除了按照<quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0>添加依赖之外,pom.xml里新增加依赖: <dependency> ...