背景:所写的QTP脚本都是脱离了对象库的描述性编程
最近在对一个WebTable的数据验证的脚本中,该WebTable中的所有对象都是WebElement对象,没有name属性,唯一的属性就是innertext,而该属性值就是将要验证的数据值,而且该属性对不同的记录值是不同的。所以在对象描述时不能使用该属性,无法定位到该对象。
解决方法:webelement一般可用它父对象的孩子对象的集合访问到该对象。利用childobjects和childitem方法读取WebTable中任意单元格的对象。
一般情况下,使用Childitem方法是较好的选择:
browser("title:=*").page("title:=*").webtable("name:=*").childitem(i,j,"WebElement",0)即可。
但在执行该语句时一直报错。
用browser("title:=*").page("title:=*").webtable("name:=*").exist 检验其返回值为TRUE
其错误原因一直未知。
使用childobjects方法,输出表中的所有对象及各对象的下标,再看所要对象的下标是多少:
set obj= Browser("title:=*").Page("name:=*").WebTable("index:=3","html id:=")
Set oDesc = Description.Create()
oDesc("micclass").Value ="WebElement"
Set L =obj.ChildObjects(oDesc)
for i=1 to L.Count()
print L(i).GetROProperty("innertext")&i
next
chiditem是利用行列二维坐标来定位对象,便于访问表中某一对象或遍历整个表。而childobjects输出的结果具有表中的层次结构,首先将整表的对象全部输出,然后是表的第一行,其次是第一行的第一个对象依此类推。