51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3266|回复: 4
打印 上一主题 下一主题

[原创] 遭遇QTP描述性编程的对象识别错误

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-5-9 14:59:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天遇到一个QTP描述性编程的比较奇怪的现象,以前跑的好好的脚本突然验证失败了,经过多次尝试终于发现了其中的规律,那就是QTP在描述性编程上存在对象识别错误的情况。如果各位曾经遇到过这个问题,或者有好的解决方法的话,请指教。

案发现场如下:
在脚本中用描述性编程定义了对象
验证对象是否存在,然后点击这个对象并进行删除,到这里所有操作都是正常的
验证删除结果,判断对象是否存在,居然对象还是存在的!(这里就出现了错误)
但是,如果删除之后,验证对象是否存在之前如果再设置一下对象,则判断为对象不存在(正确)

脚本如下:
Set obj = Browser("XX").Page("XX").WebElement("innertext:=XX","html tag:=SPAN")
msgbox obj.exist(2)                -- True
obj.Click
obj.FireEvent "oncontextmenu"  --弹出右键菜单
Browser("XX").Page("XX").WebElement("删除(D)").Click                --删除
msgbox obj.exist(2)                -- True(有错)
Set obj = Browser("XX").Page("XX").WebElement("innertext:=XX","html tag:=SPAN")        --如果这里再次设置一下,就能判断正确了
msgbox obj.exist(2)  -- False

如果上面没有重新再设置一次,则以下方式也能得到正确结果,说明对象识别出现错误
msgbox Browser("FreeQuery").Page("FreeQuery").WebElement("innertext:=qqq","html tag:=SPAN","index:=0").exist(2)  -- False

另外,在某页面设置了对象,如果退出这个页面再进来,即使对象没有任何变化,也要重新定义一次,否则也会发生对象找不到的情况。

关于这个问题,为什么会这样,有什么方法避免,暂时还不清楚 ,希望各位大侠指点。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-5-9 16:29:04 | 只看该作者
Assigns an object reference to a variable or property, or associates a procedure reference with an event

在下胡言乱语,别全信。 我一般不set替换,直接用就没有这个烦恼了。

得到了对象的引用,不是复制了set obj= 后面的语句,把对象的引用放入一块内存空间。
删除对象后,对象本身消失,内存引用 里面保存的对象及其属性没有消失,为什么没有消失呢,应该是上层对象(内存的分配单位,page)没有消失,所以能拿到之前的属性
跳转页面后对象消失,引用仍然指向那块内存,实际那块内存已经被更新或者清空了。再回来的时候对象内存地址变了,所以引用 找不到 对象了
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-5-9 16:39:04 | 只看该作者
和我上次碰到的问题一样,描述性变成的对象识别问题,呵呵
同样的解决方法
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-5-9 16:42:33 | 只看该作者
估计exist是在内存中找
不是帮你重新在页面上找
所以要重新Set一下
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-5-9 16:46:02 | 只看该作者
不光是exist,呵呵
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 10:44 , Processed in 0.072343 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表