selenium webdriver读取excel进行数据驱动测试
上一篇 /
下一篇 2015-11-10 17:47:46
/ 个人分类:Selenium
http://www.cnblogs.com/liu-ke/p/4223807.html
最近做自动化需要从文件读取数据做参数化,网上发现一个不错的解决方案。
准备:新建一个
excel文件,文件名为
测试类名,sheet名为测试方法名
excel第一行为标题,从第二行开始为测试数据
build path:jxl.jar
code:
1importjava.io.FileInputStream;2importjava.io.InputStream;3importjava.util.HashMap;4importjava.util.Iterator;5importjava.util.Map;67importorg.testng.Assert;89importjxl.*;1011/**12* Excel放在Data文件夹下</p>13* Excel命名方式:测试类名.xls</p>14* Excel的sheet命名方式:测试方法名</p>15* Excel第一行为Map键值</p>16* 代码参考郑鸿志的Blog17* {@linkwww.zhenghongzhi.cn/post/42.html}18* @ClassName: ExcelDataProvider19* @Description: TODO(读取Excel数据)20*/21publicclassExcelDataProviderimplementsIterator<Object[]>{2223privateWorkbook book =null;24privateSheet sheet =null;25privateintrowNum = 0;26privateintcurrentRowNo = 0;27privateintcolumnNum = 0;28privateString[] columnnName;2930publicExcelDataProvider(String classname, String methodname) {3132try{3334intdotNum = classname.indexOf(".");3536if(dotNum > 0) {37classname = classname.substring(classname.lastIndexOf(".") + 1,38classname.length());39}40//从/data文件夹下读取以类名命名的excel文件41String path = "data/" + classname + ".xls";42InputStream inputStream =newFileInputStream(path);4344book =Workbook.getWorkbook(inputStream);45//取sheet46sheet =book.getSheet(methodname);47rowNum =sheet.getRows();48Cell[] cell = sheet.getRow(0);49columnNum =cell.length;50columnnName =newString[cell.length];5152for(inti = 0; i < cell.length; i++) {53columnnName[i] =cell[i].getContents().toString();54}55this.currentRowNo++;5657}catch(Exception e) {58e.printStackTrace();59Assert.fail("unable to read Excel data");60}61}6263publicbooleanhasNext() {6465if(this.rowNum == 0 ||this.currentRowNo >=this.rowNum) {6667try{68book.close();69}catch(Exception e) {70e.printStackTrace();71}72returnfalse;73}else{74//sheet下一行内容为空判定结束75if((sheet.getRow(currentRowNo))[0].getContents().equals(""))76returnfalse;77returntrue;78}79}8081publicObject[] next() {8283Cell[] c = sheet.getRow(this.currentRowNo);84Map<String, String> data =newHashMap<String, String>();85//List<String> list = new ArrayList<String>();8687for(inti = 0; i <this.columnNum; i++) {8889String temp = "";9091try{92temp =c[i].getContents().toString();93}catch(ArrayIndexOutOfBoundsException ex) {94temp = "";95}9697//if(temp != null&& !temp.equals(""))98//list.add(temp);99data.put(this.columnnName[i], temp);100}101Object object[] =newObject[1];102object[0] =data;103this.currentRowNo++;104returnobject;105}106107publicvoidremove() {108thrownewUnsupportedOperationException("remove unsupported.");109}110}
相关阅读:
- 【转】将Testlink的xml用例导入至excel (yanfang_zheng, 2015-12-10)
- Excel (iFangyi, 2015-12-11)
- LoadRunner Excel 读写操作(针对单个表格操作) (稻香老农, 2015-12-25)
- excel VBA 学习笔记 <一> (helen_zhang109, 2016-3-05)
- excel VBA 学习笔记 <二> (helen_zhang109, 2016-3-05)
- python简单读excel文件 (兜兜米, 2016-3-25)
- [转]Java操作Excel (ChinaTNT, 2016-4-01)
- Webdriver数据驱动之excel实现登录参数化 (lp20105203344, 2016-4-24)
- Windows 7下的Excel 2010同时打开多个独立的窗口 (szdgz, 2016-4-27)
- VBS之excel操作集锦 (幽幽草哈哈, 2016-7-08)
收藏
举报
TAG:
Excel