QTP中使用 Exist 的问题
现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4我上传一个文件,上传过程中有进度条。上传完成进度条就消失了。
我就用QTP去判断,直要有进度条就继续等待:
do Until 进度条.exist(1) = False
wait(1)
loop
后来发现程序一直都在等待,上传完了还在等待。
Debug才发现 进度条.exist(1) = True 一直都成立。
原因:进度条和上面的文字只是一个动画,开始上传就为可见;上传完成即为不可见。但一直都是存在的!
所以,QTP简直太“智能”了!sdlkfj5
但我使用 进度条.object 方法 来调用它的 Visible 属性 居然也一直都为True。
获取运行时属性也为True。
不知是QTP自身的问题,还是我哪里思路有问题?sdlkfj8 sdlkfj8 sdlkfj8
目前有办法可以解决:不去识别进度条,去识别上传列表。
(可以解决部分问题,但列表数据多之后脚本就不好写)
能识别到进度条 是最好的解决办法, 如何去识别进度条呢? 有没有用同步点试试
同步点
原帖由 sidneylover 于 2007-6-9 13:14 发表 http://bbs.51testing.com/images/common/back.gif有没有用同步点试试
sdlkfj1 你所说的同步点,指的是?
[ 本帖最后由 higkoo 于 2007-6-11 16:28 编辑 ] 进度条这个可以用同步点来解决的,不用那么麻烦的吧,,查阅一下同步点的相关知识吧 http://blog.51testing.com/?26649/action_viewspace_itemid_808.html 原帖由 higkoo 于 2007-6-9 10:52 发表
现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4
do Until 进度条.exi ...
如果这个进度条一直存在于页面上,而且Visible属性也没有变化。可以再检查和对比一下它在可见和不可见状态时,本身的某项属性有没有发生变化的。
或者寻求一下开发人员的帮助,看看进度条的显示和隐藏是如何控制的。
如果存在这样的属性或者状态,把他们作为判断的条件就行了。 那进度条一直没关(在qtp中),程序都死循环了. 用SPY看一下这个对象的属性,包括运行时和运行后的属性值, 我想取属性值取错了,如果是运行完之后这个对象还存在的话,那就用visible这个属性试试
回复
原帖由 wgx198302发表 http://bbs.51testing.com/images/common/back.gif
那进度条一直没关(在qtp中),程序都死循环了.
是的,程序一直都等下去…… 死循环!
原帖由 yangkinki
发表 http://bbs.51testing.com/images/common/back.gif
用SPY看一下这个对象的属性,包括运行时和运行后的属性值, 我想取属性值取错了,如果是运行完之后这个对象还存在的话,那就用visible这个属性试试
.
理论上是可行的,但我用Visible试过了,无论是否可见返回值都是True。
原帖由 winfood
发表 http://bbs.51testing.com/images/common/back.gif
如果这个进度条一直存在于页面上,而且Visible属性也没有变化。可以再检查和对比一下它在可见和不可见状态时,本身的某项属性有没有发生变化的。
或者寻求一下开发人员的帮助,看看进度条的显示和隐藏是如何控制的。
如果存在这样的属性或者状态,把他们作为判断的条件就行了。
周一回公司用Spy试试,有想过用其它属性去试,但没想过去查看和比较他们的属性哪里不一样。
sdlkfj6
原帖由 yangkinki
发表 http://bbs.51testing.com/images/common/back.gif
用SPY看一下这个对象的属性,包括运行时和运行后的属性值, 我想取属性值取错了,如果是运行完之后这个对象还存在的话,那就用visible这个属性试试.
Visible是不行的了,不过确实要用Spy试一下sdlkfj2 sdlkfj5 可以用检查点来判断
检查点不行
原帖由 gotolife 于 2007-6-10 16:28 发表 http://bbs.51testing.com/images/common/back.gifsdlkfj5 可以用检查点来判断
检查点的结果和 上面使用 属性.exist + wait 的结果是一样的。
我专门用checkpoint 试过,不管是否出现进度条,Checkpoint都为Pass
还是要看看两者有何不同吧。 原帖由 higkoo 于 2007-6-10 18:49 发表 http://bbs.51testing.com/images/common/back.gif
检查点的结果和 上面使用 属性.exist + wait 的结果是一样的。
我专门用checkpoint 试过,不管是否出现进度条,Checkpoint都为Pass
还是要看看两者有何不同吧。
用Bitmap检查点
是个动画
原帖由 gotolife发表 http://bbs.51testing.com/images/common/back.gif
用Bitmap检查点
那个进度条是个动画, 用图片检查点,应该是失败的吧…… sdlkfj7
图片检查点只能检查静态图片的 原帖由 higkoo 于 2007-6-10 22:08 发表 http://bbs.51testing.com/images/common/back.gif
那个进度条是个动画, 用图片检查点,应该是失败的吧…… sdlkfj7
图片检查点只能检查静态图片的
sdlkfj8 不是image检查点,是Bitmap检查点
把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截图是一致的,将返回True,否则,动画不消失,截图上会存在进度条,与检查点的截图不一致,将返回False
这种问题.只能用DOM 的方法来解决. 打开这
个页面的SOURCE CODE 看看有什么规律. 方便的话把SOURCE CODE 贴上来. 我帮你看看.原帖由 higkoo 于 2007-6-9 10:52 发表 http://bbs.51testing.com/images/common/back.gif
现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4
我上传一个文件,上传过程中有进度条。上传完成进度条就消失了。
我就用QTP去判断,直要有进度条就继续等待:
do Until 进度条.exi ...
回复 #15 henhenchen 的帖子
我认为这"进度条"肯定在一个TABLE 的CELL 中或什么地方. 去判断这个CELL或"什么地方" 的可见性. 应该可以. 不是image检查点,是Bitmap检查点把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截图是一致的,将返回True,否则,动画不消失,截图上会存在进度条,与检查点的截图不一致,将返回False
'不好意思,请问怎样可以“循环监听”? 原帖由 gotolife 于 2007-6-10 22:28 发表 http://bbs.51testing.com/images/common/back.gif
sdlkfj8 不是image检查点,是Bitmap检查点
把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截 ...
这个方法真实绝了,俺太佩服你了 原帖由 higkoo 于 2007-6-9 14:29 发表 http://bbs.51testing.com/images/common/back.gif
sdlkfj1 请问大侠一个很 羞涩 的问题:什么是同步点 啊?
同步点waitproprety 不能解决这个问题——如果网页元素的属性不发生改变
但是我有点想不通,等待图片从不显示到显示,那么它的visable的属性一定发生了改变,LZ是不是应该询问开发工程师这段代码的问题?
要不用上面说的BITMAP检查我想也可以啊
等着LZ的好消息
被这个问题给征服了
我尝试了用SPY,发现属性都是一样的。而且运行过程,我使用脚本记录它的属性:
*********************************************************************************
With .Page("Page").Frame("myFrame")
x="html tag"
y="html id"
z="innertext"
l="visible"
a = .WebElement("WebTable").GetROProperty (""&x)
b = .WebElement("WebTable").GetROProperty (""&y)
c =.WebElement("WebTable").GetROProperty (""&z)
d =.WebElement("WebTable").GetROProperty (""&l)
'在点击“上传”按钮前,把控件的属性显示在报告里
reporter.ReportEvent 0,"点击前", x&"="& a &chr(13)&y&"="& b & chr(13) &z &"="& c&chr(13)&l&"="& d
.WebButton("上传").Click
wait(1)
a = .WebElement("WebTable").GetROProperty (""&x)
b = .WebElement("WebTable").GetROProperty (""&y)
c =.WebElement("WebTable").GetROProperty (""&z)
d =.WebElement("WebTable").GetROProperty (""&l)
'在点击“上传”按钮后,把控件的属性显示在报告里
reporter.ReportEvent 0,"点击后", x&"="& a &chr(13)&y&"="& b & chr(13) &z &"="& c&chr(13)&l&"="& d
End With
*********************************************************************************
运行完成,查看报告:
点击前 html tag=TD
html id=
innertext=正在上传请稍等...
visible=True
Passed 2007-6-11 - 11:27:35
点击后 html tag=TD
html id=
innertext=正在上传请稍等...
visible=True
Passed 2007-6-11 - 11:27:40
奇怪的是,点击前明明是看不见的,visible应该为false才对。偏偏为true,其它可识别的属性值完全一样。
真是没办法了……
[ 本帖最后由 higkoo 于 2007-6-11 13:03 编辑 ]
页:
[1]
2