RFT工具中取html(web)中的表格数据的方法(请高手赐教)
使用RFT工具取网页中的表格数据时,本来异想天开地想使用什么atCell之类的方法(因为看上去挺像是处理这一类问题的),但是不知道是没这种功能还是我不知道怎么用,反正就不会用,于是我就直接取table().getPropertites().get(".text"),这个取出来就是一个字符串,各行的数据完全粘在一个字符串中了(还好有空格),于是我需要根据规则来分解数据,假如数据格式如下:Date colnameA colnameB colnameC <——假设这是表头,下面的是数据
2009/09/24 xxxxxx xxxxxx xxxxxx
2009/09/25 xxxxxx xxxxxx xxxxxx
2009/09/26 xxxxxx xxxxxx xxxxxx
2009/09/27 xxxxxx xxxxxx xxxxxx
那么就先看看表头的最后一个字段跟数据的第一个字段(即colnameC和2009/09/24)之间有没有什么特征,如果第一列的数据特征很明显,比如是时间格式,如2009/09/24,那么你就可以根据这个来分解。当遇到xxxx/xx/xx时就分行,到此,就进行了行的分解(使用split方法,我所做的项目只要分解到此就可以了)。如果还需要继续进行单元格的分解,那么就在刚才的基础上,再根据单元格之间有空格来分解(当然,如果是在一个单元格中就有空格,那就另想办法吧),这样就完成了整个表的分解了。反正原则是根据有特征的值来分解,但有一个限制就是特征必须很明确,否则,假设第一列的数据是一个序号,如1,2,3...,那么这样就没法分解了。我现在的项目中正是遇到了这个问题。 附数据的格式:
No. colname colname colname <——假设这是表头,下面的是数据
1 xxxxxx xxxxxx xxxxxx
2 xxxxxx xxxxxx xxxxxx
3 xxxxxx xxxxxx xxxxxx
4 xxxxxx xxxxxx xxxxxx
我现在需要实现的目的是,取这个表格的数据,一行就串成一个字符串即可,目的是为了跟数据库中查询的记录一致的格式。不知道该如何实现了。。。。哎,很郁闷~~不知道哪位高手能不能给指点一下。谢了~~~
[ 本帖最后由 lovecy 于 2009-9-28 22:10 编辑 ] 能再把你的问题明确一下么?你不是已经有了那样的一个二维数组了吗?如果是为了将一行串成一个字符串,那么就读取二维数组的每一行,存储到一个新的一维数组里不就可以了吗? 回dreaamever,简单点说吧,html中的表格数据一般怎么取?
注意,用RFT插入测试对象(或录制对象)时,只能取整个表格,而不能取行或单元格,所以,我是通过取table().getProperities()中的.text属性,但是这个属性呢,就把表格中的所有数据都粘成字符串了,比如,在1楼中表1的数据取到的就是:
Date colnameA colnameB colnameC 2009/09/24 xxxxxx xxxxxx xxxxxx 2009/09/25 xxxxxx xxxxxx xxxxxx 2009/09/26 xxxxxx xxxxxx xxxxxx2009/09/27 xxxxxx xxxxxx xxxxxx
这个还算好分,因为第一列都是yyyy/mm/dd格式的数据,所以可以按照遇到yyyy/mm/dd就换行,从而达到分解后的数据可以跟数据库中查询出来的一致。但是1楼中的表2的数据如何去换行呢?它也粘成一个字符串了,要知道,它的第一列就是一个数值而已,肯定不可能按照遇到数值就换行吧?因为上一行的最后一列也有可能是数值。
[ 本帖最后由 lovecy 于 2009-9-30 09:38 编辑 ] 先取回整个表的内容。再取指定 的单元格
/**
*返回表格的数据
*@param a:表格对象
*/
public static Object gettable(TestObject a,int row,int col)
{ ITestDataTable myTable;
myTable = (ITestDataTable)a.getTestData("grid");
returnmyTable.getCell(row,col);
} 原帖由 lnn693 于 2009-9-30 11:05 发表 http://bbs.51testing.com/images/common/back.gif
先取回整个表的内容。再取指定 的单元格
/**
*返回表格的数据
*@param a:表格对象
*/
public static Object gettable(TestObject a,int row,int col)
{ ITestDataTable myTable;
myTabl ...
这个方法极好,以前都没注意到过还有这样的方法,赞一个~! 原帖由 lnn693 于 2009-9-30 11:05 发表 http://bbs.51testing.com/images/common/back.gif
先取回整个表的内容。再取指定 的单元格
/**
*返回表格的数据
*@param a:表格对象
*/
public static Object gettable(TestObject a,int row,int col)
{ ITestDataTable myTable;
myTabl ...
确实,兄弟厉害,其实这个方法返回表格中的所有数据会比较好一点
public class TableData
{
public static ITestDataTable gettable(TestObject a)
{
ITestDataTable myTable;
myTable = (ITestDataTable)a.getTestData("grid");
returnmyTable;
}
}
再引用该方法
public void testMain(Object args[])
{
TableData td=new TableData();
ITestDataTable tableData=td.gettable("表格对象");
int col=tableData.getColumns();
int row=tableData.getRows();
String rowString="";
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
rowString += tableData.getCell(i,j)+" ";
}
rowString +="\n";
}
}
这样就把所有的行以空格隔开,串成一个字符串,确实比我以前的做法要好很多~~~哈哈哈...
多谢兄台了
[ 本帖最后由 lovecy 于 2009-10-16 23:27 编辑 ] 改进了一下
//该方法用于返回整个表格的数据,传递参数为表格对象
public void getTableData(TestObjecttableObject)
{
//取表格的数据
ITestDataTable tableData = (ITestDataTable)tableObject.getTestData("grid");
//取表格的行数
int col = tableData.getColumns();
//取表格的列数
int row = tableData.getRows();
String rowConnectString = "";
//循环取表格单元格的值,用空格隔开,然后换行
for(int i = 0 ; i < row ; i++)
{
for(int j = 0 ; j < col ; j++)
{
rowConnectString += tableData.getCells(i , j) + "";
}
rowConnectString += "\n";
}
}
页:
[1]