51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2603|回复: 10
打印 上一主题 下一主题

[原创] QTP 回放问题求助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-12 09:54:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用QTP录制了一段脚本,中间需要选中树形结构中的一项。(这树形结构是一堆文件夹,每个文件夹前面都有个checkbox表示可以勾选)
可是回放的时候经常说找不到
下面是我录制的代码:
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("extcomp1005iframe").WebCheckBox("WebCheckBox").Set "ON" '选中树形结构中的特定文件夹前的checkbox

Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("extcomp1005iframe").WebButton("WebButton").Click  ‘点击保存按钮

报错如下:
Cannot find the "WebCheckBox" object's parent "extcomp1005iframe" (class Frame). Verify that parent properties match an object currently displayed in your application.
Line (16): "Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("extcomp1005iframe").WebCheckBox("WebCheckBox").Set "ON"".
Tip: If the objects in your application have changed, the Maintenance Run Mode can
help you identify and update your steps and/or the objects in your repository.

看起来这个对象extcomp1005iframe似乎一直在变化,有没有什么好的方法可以解决。求大虾们帮忙

[ 本帖最后由 131425god 于 2010-7-12 10:00 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-7-12 11:05:03 | 只看该作者
在对象库中看看extcomp1005iframe这个Frame对象是怎么识别的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-7-12 11:10:45 | 只看该作者
extcomp1005iframe这个Frame对象有三个属性加以识别,分别是type,html tag, html id,其中html id=ckb_2
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-7-12 11:13:09 | 只看该作者

回复 2# 的帖子

extcomp1005iframe这个Frame对象有三个属性加以识别,分别是type,html tag, html id,其中html id=ckb_2
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-7-12 11:20:02 | 只看该作者

回复 2# 的帖子

弄错了,extcomp1005iframe这个Frame对象里就一个属性,是name=extcomp1002iframe, 看起来是这里不一致?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-7-12 11:24:44 | 只看该作者
暂时能想到的办法:
1)html id这个值可能一直再变,多刷新几次页面就可以判断出来。比如刷第3次的时候就是ckb_3。如果的确是变化的,那就不能直接用这个值了。替代办法:
1.a 查一下“extcomp1005iframe”是不是可以唯一识别的属性,如果是的话可以试一下设置这个值作为识别属性;
1.b 如果页面上只有这一个Frame,可以试一下在识别属性html id上加正则表达式,比如ckb_*

2)QTP对象库的结构是可以手工编辑的,实在不行你可以把Frame这层对象从对象库里面删除。原有属于Frame对象的那些子对象,现在直接隶属于Page对象了。对象库结构就变成
Browser.Page.WebCheckBox
Browser.Page.WebButton
... ...

试一下吧
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-7-12 11:26:00 | 只看该作者

回复 4# 的帖子

用Spy查一下属性,看看实时的对象属性和你的对象库是不是一致
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-7-12 11:28:34 | 只看该作者
首先谢谢大家,我刚才查看了一下,发现paren   textcomp1005iframe这个一直再变,比如说,我第一次录制它叫做extcomp1005iframe, 第二次录制它会变,比如变成了extcomp1006iframe,每次都不一样。
6楼说的剔除parent 对象我试试看至于extcomp1005iframe下面的checkbox,因为我想勾选的是同一个checkbox,所以那个htmlid 倒是不会变的
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-7-12 11:42:40 | 只看该作者
原帖由 131425god 于 2010-7-12 11:28 发表
首先谢谢大家,我刚才查看了一下,发现paren   textcomp1005iframe这个一直再变,比如说,我第一次录制它叫做extcomp1005iframe, 第二次录制它会变,比如变成了extcomp1006iframe,每次都不一样。
6楼说的剔除pare ...

前面的那些建议是被你的描述误导了,因为你说html id = ckb_2。

这个问题就是对象识别的问题,默认的Frame对象只用了Name属性识别而这个属性一直在变。
解决办法:
1)找到这个对象的属性值固定不变的那些属性,作为识别属性,代替现有的Name属性。或者
2)这个对象的属性变化是有规律的,extcomp****iframe。保持Name作为识别属性,把属性值改为正则表达式:extcomp[0-9]{4}iframe
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    10#
    发表于 2010-7-12 16:15:47 | 只看该作者
    frame识别,我喜欢先用url识别,如果用的同一个模板,再用其他来识别
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2010-7-13 10:15:12 | 只看该作者

    回复 6# 的帖子

    剔除parent这个办法不错,终于可以了,我直接引用了子对象的属性来调用子对象,回放很OK,谢谢,谢谢各位大虾们,
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-28 15:42 , Processed in 0.086338 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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