|
不是这个意思。比如说QTP中对象的层次结构从顶层往下依此是:browser(“IE”)——PAGE(“查询结果”)——Frame("mainbody").WebElement("妇保院等级“)
在这样的一个对象结构中,你那张图里所有的单元格(包括那个“妇保院等级”单元格)都在Frame("mainbody")这个对象下面,是它的子对象。Frame("mainbody")就是我所说的object,
desc就是你创建的代表单元格的描述性语言。
对于开发人员来说,页面中每一类单元格都需要有一个标识,拿那张图来说,他们在生成那张图里的页面时,也需要区分行表头、列表头单元格、只读单元格、可编辑单元格等等,他们会给这些单元格(在HTML是TD)加一个唯一标识的属性,例如对于表头,可能会有一个属性叫isheadcell=true,所有该属性为True的单元就是表头,而对于那些统计数字的单元格类型也会有类似的一个标识。这些标识是能够被QTP的SPY直接识别出来的(除非用的是DIV或自定义控件,那会麻烦一点,但是也能实现)。
只要知道了那些统计数字的单元格标识,我们就可以用描述性编程对象来实现了。比如说如果所有单元格都有一个属性:isCountResult,而统计单元格该属性为True,其他单元格属性为false,那么我们就可以象下面这样获取单元格对象:
Set cellobjs = description.Create '创建描述性编程对象
cellobjs("micclass").value = "td" '设置该对象的类型是单元格(TD)
cellObjs("isCountResult").value = true '设置该单元格是统计数字的单元格,具体的属性名和属性值可以从spy来查看,我只是举例
Set objitem = browser("IE").PAGE("查询结果").Frame("mainbody").ChildObjects(cellobjs)'该语句获取页面中所有micclass为TD、isCountResult为True的单元格,并返回一个集合
'下面用一个循环来访问所有的单元格
For i = 1 to objitem.count
objitem(i).click'点击每个统计数字的单元格,此步骤只为举例,如果只获取单元格的值,该步骤可省略
a = objitem(i).getRoProperty("value")'获取每个单元格的值,当然实际中属性值未必一定是value,这里也只是举例
'code……可以写代码将a与预期结果进行比较,一致的话则通过,不一致的话则失败,最后生成测试报告
Next |
|