51Testing软件测试论坛

标题: 如何动态将对象加载到对象库(急) [打印本页]

作者: peimzh    时间: 2008-5-14 13:16
标题: 如何动态将对象加载到对象库(急)
Browser("Firewall_2").Page("Firewall").Frame("data").WebCheckBox("cdel_check").Set "OFF"
Browser("Firewall_2").Page("Firewall").Frame("data").WebCheckBox("cdel_check_2").Set "OFF"
Browser("Firewall_2").Page("Firewall").Frame("data").WebCheckBox("cdel_check_3").Set "OFF"

录制的时候,将对象cdel_check_3等都录制到对象库中了,但是我用了个for循环:
For i=2 to RowN-1
        Cdel = "cdel_check"+"_"+cstr(i)
        If  Browser("Firewall").Page("Firewall").Frame("data").WebCheckBox(Cdel).Object.checked Then
         Equal = Equal+1        
        End If
Next
我在页面又添加了两个对象cdel_check_4、5
其中当Cdel=cdel_check_4、5或更多的时候,这时这些对象并没有加载到对象库中,当跑循环的时候就会出现错误,
大家有没有什么好办法,让QTP自动检查页面的对象动态加载到对象库中呀?谢谢了
非常感谢
作者: zte_boy    时间: 2008-5-14 14:32
你这根本不是添加对象到对象库啊,更改的这个对象的名字又有什么用呢,呵呵

象这样的问题用描述性变成就很好解决了,获取出界面上所有WebCheckBox对象,逐个进行操作就OK了
作者: peimzh    时间: 2008-5-14 14:38
兄弟,怎么获取呀,谢谢了,告诉一下
作者: zte_boy    时间: 2008-5-14 14:56
childobjects方法,QTP帮助里描述的很清楚的
作者: 没有蛀牙    时间: 2008-5-14 16:41
对于这种动态的对象
我觉得用描述性对象更好
作者: peimzh    时间: 2008-5-14 17:14
我这段程序如何用描述性编程呢,谢谢给个回复,写一下
作者: zte_boy    时间: 2008-5-14 17:24
Dim oWebCheckBox
Set oWebCheckBox= Description.Create()
oWebCheckBox("micclass").value = "WebCheckBox"
Set ObjWebCheckBox = Browser("Firewall_2").Page("Firewall").Frame("data").ChildObjects(oWebCheckBox)
NumberOfoWebCheckBox = ObjoWebCheckBox.count
for i = 0 to NumberOfoWebCheckBox  - 1
    ObjWebCheckBox(i).set "ON"
next
作者: peimzh    时间: 2008-5-14 18:24
兄弟,我就想用WebCheckBox("cdel_check_3")的形式表示,如何表示呢,"cdel_check_3"这个部分用变量表示
作者: hsjzfling    时间: 2008-5-14 18:38
LS的问题类同如何让兔子吃肉~~

解决该问题的方法有很多,上面也有人提到一些了,比如参数化对象属性值(或描述性编程)、ChildObjects方法等等

要按照你的意愿来实现也可以,表示的方式你自己也都已经写出来了,但同时必须要事先将所有的对象都手动添加到对象库中。
作者: walker1020    时间: 2008-5-15 23:51
QTP没有自动检查页面的对象动态加载到对象库中的功能,因此需要你先把需要操作的对象添加到对象库里面去。否则,就使用描述性编程,让 QTP 临时去找 需要操作的对象了。
作者: heqingbluesky    时间: 2008-5-16 09:51
QTP只有静态(事先录制好)的加载对象,没有动态的加载,这个想法基本不能实现。
不过,可以用描述性编程试试。
作者: yolanda_h    时间: 2008-5-30 17:38
cdel_check_2, cdel_check_3, 如果换成这样的形式怎么办?
cdel_check[0].hour, cdel_check[1].hour,其中是每次会递增的
用F7的办法ms不行,或者要做怎么样的调整呢?
作者: yolanda_h    时间: 2008-5-30 17:43
搞定啦,呵呵~~一发帖就有灵感了
作者: lyscser    时间: 2008-5-30 22:57
楼主的问题是应该对HP提的,不该问大家,呵呵

用Description、ChildObjects
作者: FLY000    时间: 2008-5-31 16:07
原帖由 zte_boy 于 2008-5-14 17:24 发表
Dim oWebCheckBox
Set oWebCheckBox= Description.Create()
oWebCheckBox("micclass").value = "WebCheckBox"
Set ObjWebCheckBox = Browser("Firewall_2").Page("Firewall").Frame("data").ChildObjects(oWebChe ...


有个地方不明白,为什么你自己定义的对象oWebCheckBox就等于Browser("Firewall_2").Page("Firewall").Frame("data")上的对象呢?
如果还有其他的这个类型的对象,怎么办?还是一样写吗?
作者: f84248860    时间: 2008-6-3 10:56
建议不要用ChildObjects
Ajax异步刷新会给ChildObjects带来麻烦
用index更好




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2