Selenium对系统文件的处理操作

21 views
Skip to first unread message

Guessay Cai

unread,
Jul 20, 2011, 6:08:25 AM7/20/11
to WATF Forum
在Selenium自带的org.openqa.selenium.io包中,我们可以看
到“Zip.java”跟“FileHandle.java”,其中包括了我们常用的几种处理文件的方法,例如:创建,删除,复制,压缩,解压缩等。

但是Selenium自带的方法中并没有关于Excel表格的处理操作。经过几天的在网上的查找,发现了JXL.jar。
jxl是一个用java写的用来操作excel的工具,其API---jexcelapi是纯Java的,并不依赖Windows系统,即使运行在
Linux下,它同样能够正确的处理Excel文件。正好符合我们WATF跨平台的需要。

我们可能主要用到的是它的基本操作:
一、创建文件
二、读取文件
三、修改文件
在此,我把其基本的方法摘录了一下,方便大家理解:
一、创建文件
  拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:
  代码(CreateXLS.java):
  //生成Excel的类
  import java.io.*;
  import jxl.*;
  import jxl.write.*;
  public class CreateXLS
  {
  public static void main(String args[])
  {
  try
  {
  //打开文件
  WritableWorkbook book=
  Workbook.createWorkbook(new File(“测试.xls”));
  //生成名为“第一页”的工作表,参数0表示这是第一页
  WritableSheet sheet=book.createSheet(“第一页”,0);
  //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
  //以及单元格内容为test
  Label label=new Label(0,0,”test”);
  //将定义好的单元格添加到工作表中
  sheet.addCell(label);
  /*生成一个保存数字的单元格
  必须使用Number的完整包路径,否则有语法歧义
  单元格位置是第二列,第一行,值为789.123*/
  jxl.write.Number number = new jxl.write.Number(1,0,789.123);
  sheet.addCell(number);
  //写入数据并关闭文件
  book.write();
  book.close();
  }catch(Exception e)
  {
  System.out.println(e);
  }
  }
  }
  编译执行后,会在当前位置产生一个Excel文件。
二、读取文件
  以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:
  //读取Excel的类
  import java.io.*;
  import jxl.*;
  public class ReadXLS
  {
  public static void main(String args[])
  {
  try
  {
  Workbook book=
  Workbook.getWorkbook(new File(“测试.xls”));
  //获得第一个工作表对象
  Sheet sheet=book.getSheet(0);
  //得到第一列第一行的单元格
  Cell cell1=sheet.getCell(0,0);
  String result=cell1.getContents();
  System.out.println(result);
  book.close();
  }catch(Exception e)
  {
  System.out.println(e);
  }
  }
  }
  程序执行结果:test
三、修改文件
  利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样
的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:
  //修改Excel的类,添加一个工作表
  import java.io.*;
  import jxl.*;
  import jxl.write.*;
  public class UpdateXLS
  {
  public static void main(String args[])
  {
  try
  {
  //Excel获得文件
  Workbook wb=Workbook.getWorkbook(new File(“测试.xls”));
  //打开一个文件的副本,并且指定数据写回到原文件
  WritableWorkbook book=
  Workbook.createWorkbook(new File(“测试.xls”),wb);
  //修改文本内容:例修改sheet2中cell B3的label内容
  WritableSheet sheet2 = book.getSheet(1);
  WritableCell cell = sheet2.getWritableCell(1, 2);
  if (cell.getType() == CellType.LABEL)
  {
  Label l = (Label) cell;
  l.setString("modified cell");
  }
  //修改文本格式:例修改sheet2中cell C5的Number的格式
  WritableSheet sheet2 = book.getSheet(1);
  WritableCell cell = sheet2.getWritableCell(2, 4);
  NumberFormat fivedps = new NumberFormat("#.#####");
  WritableCellFormat cellFormat = new WritableCellFormat(fivedps);
  cell.setFormat(cellFormat);
  //添加一个工作表
  WritableSheet sheet=book.createSheet(“第二页”,1);
  sheet.addCell(new Label(0,0,”第二页的测试数据”));
  book.write();
  book.close();
  }catch(Exception e)
  {
  System.out.println(e);
  }
  }
  }


当然除了这些基本操作之外,jxl还有更高级的操作,比如:
一、数据格式化
二、单元格操作
三、操作图片
这些对我们的WATF来说可能用处会比较小,这里就不在赘述了。

最后把jxl.jar的下载网址发一下:http://www.andykhan.com/jexcelapi/download.html
大家将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

Bear Wu

unread,
Aug 23, 2011, 4:08:35 AM8/23/11
to WATF Forum
org.openqa.selenium.io包中的FileHandler类提供了读入文本文件内容的方法:public static
String readAsString( File toRead ) throws IOException;
该方法在需要读入文本文件时可能用到,例如:处理模式对话框的两段JS代码showModalDialog.js和
closeModalDialog.js就是通过这个方法读入的。
如果需要用到其他文件操作,也可以先看看org.openqa.selenium.io包中是否有已经写好的方法,如果有,拿来直接用就是了;如果没
有,可以尝试着
自己写一个。
Reply all
Reply to author
Forward
0 new messages