之前,我们使用了读取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)的更多相关文章

  1. 基于Java+Selenium的WebUI自动化测试框架(十四)-----使用TestNG的Sample

    到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当 ...

  2. 基于Java+Selenium的WebUI自动化测试框架(十二)-----读取Excel文件(POI)(2)

    上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private stati ...

  3. 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

    对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是, ...

  4. 基于Java+Selenium的WebUI自动化测试框架(八)-----读取元素(XML文件)

    我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果 ...

  5. 基于Java+Selenium的WebUI自动化测试框架(六)---浏览器初始化

    本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.se ...

  6. 基于Java+Selenium的WebUI自动化测试框架(九)-----基础页面类(BasePage)

    上篇我们写了java读取xml文件的类,实现了可以从xml文件读取元素的方式.那么,接下来我们需要考虑一个问题.我们拿了这些元素之后怎么去操作呢? 先来看看我们手工测试的时候是怎么进行的. 双击浏览器 ...

  7. 基于Java+Selenium的WebUI自动化测试框架(十一)-----读取Excel文件(POI)(1)

    上一篇说了利用JXL的jar包来读取Excel的代码.在Java中,还可以用另外一种jar包来读取Excel的内容,那就是Apache的POI. 这里和之前一样,需要导入POI的jar包,建议导入这三 ...

  8. 基于Java+Selenium的WebUI自动化测试框架(十三)-----基础页面类BasePage(Excel)

    前面,我们讲了如何使用POI进行Excel的“按需读取”.根据前面我们写的BasePageX,我们可以很轻松的写出来基于这个“按需读取”的BasePage. package webui.xUtils; ...

  9. 基于Java+Selenium的WebUI自动化测试框架(五)------页面操作实现类

    在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportn ...

随机推荐

  1. Layer文件上传同时传递表单数据

    (1)index.html <!DOCTYPE html> <html> <head> <title>TODO supply a title</t ...

  2. 8、1 周末总结+Mongdb

    都说加一个Id 注解就行了,其实还要加一条数据测试表是否生成 这里我们探讨  数据库是谁,表是谁 数据库在mongo启动的时候就指定了,这个无需我们关心 表根据实体类自动生成, 1.pom.xml & ...

  3. [转帖]keepalived实现服务高可用

    keepalived实现服务高可用 https://www.cnblogs.com/clsn/p/8052649.html 第1章 keepalived服务说明 1.1 keepalived是什么? ...

  4. Java开发笔记(一百零六)Fork+Join框架实现分而治之

    前面依次介绍了普通线程池和定时器线程池的用法,这两种线程池有个共同点,就是线程池的内部线程之间并无什么关联,然而某些情况下的各线程间存在着前因后果关系.譬如人口普查工作,大家都知道我国总人口为14亿左 ...

  5. Git手册(一):基本操作

    Git小册 本手册参考自runoob及其他网络资源,仅用于学习交流 Git工作流程   一般工作流程   1.克隆 Git 资源作为工作目录.   2.在克隆的资源上添加或修改文件.   3.如果其他 ...

  6. 路由Routers

    路由Routers 对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST framework提供 ...

  7. Fanuc Cnc 数控系统,PC端下发NC程序到CNC端,现场测试通过。

    1.这几天把FANUC 数据采集(产量,状态,轴负载等),以及NC程序下发封装成独立的dll,方便其它项目调用,自己顺便写了下demo测试,在车间测试了几天,效果很好,完善了许多细节. 2.大概的界面 ...

  8. Python 判断字符串是否包含中文

    一.摘要 使用 xlrd 模块打开带中文的excel文件时,会报错. FileNotFoundError: [Errno 2] No such file or directory: 'xx.xlsx' ...

  9. 查看线程CPU利用率

    查看线程CPU利用率 方法1:利用ps命令查看对应的线程 1. ps -ef | grep 进程名称 2. ps -mp 进程ID -o THREAD,pid,tid,cmd,time,%cpu,%m ...

  10. 基于MBT的自动化测试工具——GraphWalker介绍和实际使用

    GraphWalker是一个开源的基于模型的自动化测试工具,它可以用来通过图形测试模型来自动生成测试用例. 本文主要描述了使用yed画出FSM, EFSM模型图(常见的流程图),然后使用GraphWa ...