QTP处理WebTable

QTP处理WebTable

在测试B/S系统的时候,我们经常遇到很多列表的内容是用table做的,qtp会将这些table控件识别为WebTable控件,
那么我们如何获取webtable中的单元格(cell)里面的内容及对象呢?方法如下:
1.获取到webtable对象
2.获取webtable的总行数(RowCount)以及总列数ColumnCount
3.1.若需要获取单元的文字内容,可以用循环(两层for循环),用单元格的行数和列数,通过GetCellData方法遍历获取单元格内容
3.2若想获取单元的对象,可以用循环(两层for循环),通过ChildItem方法遍历获取webtable中的对象
4.将获取到的内容或对象与预期结果进行比较判断,找到符合要求的内容或对象,并进行后续操作
 
例子:
测试需求:
找到列表(WebTable对象)中名称为"QTP Webtable"的选项,并勾选该选项前的复选框
分析:
1.用SPY查看webtable对象的构成,发现该列表是由两列组成,复选框(WebCheckBox)位于第一列,选项名称位于第二列
2.通过两层循环分别动态设置遍历单元格时的行数和列数
3.将获取单元格内容的函数GetCellData的第一个参数设为变量i,通过循环控制i,实现遍历所有行,第二个参数固定为2,以上设置可以实现遍历webtable第二列的全部单元格
4.将获取复选框对象的函数ChildItem的第一个参数设为变量i,通过循环控制i,实现遍历所有行,第二个参数固定为1,第三个参数设为要选择的对象类型复选框(WebCkeckBox),第四个参数设置为0
5.通过for循环遍历第二列的数据,获取单元格内容,并进行判断是否为"QTP Webtable",若找到了,则进入步骤6;若不是则继续遍历第二列其他单元格,
6.若步骤5中找到了所需选项,则在相同行中找到复选框进行勾选,并结束流程
 
代码如下:
'封装WebTable对象
 Set WebTable = Browser("个人空间管理").Page("个人空间管理").WebTable("标题")
'获取WebTable行数
 Row_Count = oWebTable.RowCount
'获取WebTable总列数
 Column_Count = oWebTable.ColumnCount(1)
 For i=1To Row_Count
 '是否找到所需选项名称,默认为未找到
  Flag = 0
  For j=1 To Column_Count
  '获取列表中选项名称
   Cell_Value = oWebTable.GetCellData(i,2)
  '判断是选项名称是否为QTP Webtable
   If Trim(Cell_Value)="QTP Webtable" Then
                         '获取QTP Webtable对应行的复选框
    Set WebCheckBox = oWebTable.ChildItem(i,1,"WebCheckBox",0)
   '勾选复选框
    oWebCheckBox.Set "ON"
   '标记已经找到所需选项
    Flag = 1
    Exit For
   End If
  Next
 '若找到所需选项,则退出循环
 If Flag = 1 Then
  Exit For
 End If
 Next
posted @ 2013-07-03 14:27  芯树  阅读(1607)  评论(0编辑  收藏  举报