51Testing软件测试论坛

标题: QTP 回放问题求助 [打印本页]

作者: 131425god    时间: 2010-7-12 09:54
标题: QTP 回放问题求助
我用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 编辑 ]
作者: TIB    时间: 2010-7-12 11:05
在对象库中看看extcomp1005iframe这个Frame对象是怎么识别的
作者: 131425god    时间: 2010-7-12 11:10
extcomp1005iframe这个Frame对象有三个属性加以识别,分别是type,html tag, html id,其中html id=ckb_2
作者: 131425god    时间: 2010-7-12 11:13
标题: 回复 2# 的帖子
extcomp1005iframe这个Frame对象有三个属性加以识别,分别是type,html tag, html id,其中html id=ckb_2
作者: 131425god    时间: 2010-7-12 11:20
标题: 回复 2# 的帖子
弄错了,extcomp1005iframe这个Frame对象里就一个属性,是name=extcomp1002iframe, 看起来是这里不一致?
作者: winfood    时间: 2010-7-12 11:24
暂时能想到的办法:
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
... ...

试一下吧
作者: winfood    时间: 2010-7-12 11:26
标题: 回复 4# 的帖子
用Spy查一下属性,看看实时的对象属性和你的对象库是不是一致
作者: 131425god    时间: 2010-7-12 11:28
首先谢谢大家,我刚才查看了一下,发现paren   textcomp1005iframe这个一直再变,比如说,我第一次录制它叫做extcomp1005iframe, 第二次录制它会变,比如变成了extcomp1006iframe,每次都不一样。
6楼说的剔除parent 对象我试试看至于extcomp1005iframe下面的checkbox,因为我想勾选的是同一个checkbox,所以那个htmlid 倒是不会变的
作者: winfood    时间: 2010-7-12 11:42
原帖由 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
作者: kavensyw    时间: 2010-7-12 16:15
frame识别,我喜欢先用url识别,如果用的同一个模板,再用其他来识别
作者: 131425god    时间: 2010-7-13 10:15
标题: 回复 6# 的帖子
剔除parent这个办法不错,终于可以了,我直接引用了子对象的属性来调用子对象,回放很OK,谢谢,谢谢各位大虾们,




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