131425god 发表于 2010-7-12 09:54:05

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:03

在对象库中看看extcomp1005iframe这个Frame对象是怎么识别的

131425god 发表于 2010-7-12 11:10:45

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

131425god 发表于 2010-7-12 11:13:09

回复 2# 的帖子

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

131425god 发表于 2010-7-12 11:20:02

回复 2# 的帖子

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

winfood 发表于 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
... ...

试一下吧

winfood 发表于 2010-7-12 11:26:00

回复 4# 的帖子

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

131425god 发表于 2010-7-12 11:28:34

首先谢谢大家,我刚才查看了一下,发现paren   textcomp1005iframe这个一直再变,比如说,我第一次录制它叫做extcomp1005iframe, 第二次录制它会变,比如变成了extcomp1006iframe,每次都不一样。
6楼说的剔除parent 对象我试试看至于extcomp1005iframe下面的checkbox,因为我想勾选的是同一个checkbox,所以那个htmlid 倒是不会变的

winfood 发表于 2010-7-12 11:42:40

原帖由 131425god 于 2010-7-12 11:28 发表 http://bbs.51testing.com/images/common/back.gif
首先谢谢大家,我刚才查看了一下,发现paren   textcomp1005iframe这个一直再变,比如说,我第一次录制它叫做extcomp1005iframe, 第二次录制它会变,比如变成了extcomp1006iframe,每次都不一样。
6楼说的剔除pare ...
前面的那些建议是被你的描述误导了,因为你说html id = ckb_2。:P

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

kavensyw 发表于 2010-7-12 16:15:47

frame识别,我喜欢先用url识别,如果用的同一个模板,再用其他来识别

131425god 发表于 2010-7-13 10:15:12

回复 6# 的帖子

剔除parent这个办法不错,终于可以了,我直接引用了子对象的属性来调用子对象,回放很OK,谢谢,谢谢各位大虾们,:loveliness:
页: [1]
查看完整版本: QTP 回放问题求助