higkoo 发表于 2007-6-9 10:52:23

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

有没有用同步点试试

higkoo 发表于 2007-6-9 14:29:16

同步点

原帖由 sidneylover 于 2007-6-9 13:14 发表 http://bbs.51testing.com/images/common/back.gif
有没有用同步点试试


sdlkfj1   你所说的同步点,指的是?

[ 本帖最后由 higkoo 于 2007-6-11 16:28 编辑 ]

zhuyuancan 发表于 2007-6-9 16:36:01

进度条这个可以用同步点来解决的,不用那么麻烦的吧,,查阅一下同步点的相关知识吧

zhuyuancan 发表于 2007-6-9 16:41:21

http://blog.51testing.com/?26649/action_viewspace_itemid_808.html

winfood 发表于 2007-6-9 19:54:02

原帖由 higkoo 于 2007-6-9 10:52 发表
现在测一个Web程序,现在碰到一个很神奇的问题。sdlkfj4
do Until 进度条.exi ...
如果这个进度条一直存在于页面上,而且Visible属性也没有变化。可以再检查和对比一下它在可见和不可见状态时,本身的某项属性有没有发生变化的。
或者寻求一下开发人员的帮助,看看进度条的显示和隐藏是如何控制的。
如果存在这样的属性或者状态,把他们作为判断的条件就行了。

wgx198302 发表于 2007-6-10 08:13:51

那进度条一直没关(在qtp中),程序都死循环了.

yangkinki 发表于 2007-6-10 10:30:11

用SPY看一下这个对象的属性,包括运行时和运行后的属性值, 我想取属性值取错了,如果是运行完之后这个对象还存在的话,那就用visible这个属性试试

higkoo 发表于 2007-6-10 13:54:51

回复

原帖由 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

gotolife 发表于 2007-6-10 16:28:02

sdlkfj5    可以用检查点来判断

higkoo 发表于 2007-6-10 18:49:23

检查点不行

原帖由 gotolife 于 2007-6-10 16:28 发表 http://bbs.51testing.com/images/common/back.gif
sdlkfj5    可以用检查点来判断


   检查点的结果和 上面使用 属性.exist + wait 的结果是一样的。

我专门用checkpoint 试过,不管是否出现进度条,Checkpoint都为Pass


还是要看看两者有何不同吧。

gotolife 发表于 2007-6-10 21:33:01

原帖由 higkoo 于 2007-6-10 18:49 发表 http://bbs.51testing.com/images/common/back.gif



   检查点的结果和 上面使用 属性.exist + wait 的结果是一样的。

我专门用checkpoint 试过,不管是否出现进度条,Checkpoint都为Pass


还是要看看两者有何不同吧。



用Bitmap检查点

higkoo 发表于 2007-6-10 22:08:47

是个动画

原帖由 gotolife
发表 http://bbs.51testing.com/images/common/back.gif

用Bitmap检查点




   那个进度条是个动画, 用图片检查点,应该是失败的吧……   sdlkfj7



图片检查点只能检查静态图片的

gotolife 发表于 2007-6-10 22:28:20

原帖由 higkoo 于 2007-6-10 22:08 发表 http://bbs.51testing.com/images/common/back.gif





   那个进度条是个动画, 用图片检查点,应该是失败的吧……   sdlkfj7



图片检查点只能检查静态图片的


sdlkfj8 不是image检查点,是Bitmap检查点

把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截图是一致的,将返回True,否则,动画不消失,截图上会存在进度条,与检查点的截图不一致,将返回False

henhenchen 发表于 2007-6-11 07:30:16

这种问题.只能用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 ...

henhenchen 发表于 2007-6-11 08:34:37

回复 #15 henhenchen 的帖子

我认为这"进度条"肯定在一个TABLE 的CELL 中或什么地方. 去判断这个CELL或"什么地方" 的可见性. 应该可以.

金城月 发表于 2007-6-11 10:39:11

不是image检查点,是Bitmap检查点

把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截图是一致的,将返回True,否则,动画不消失,截图上会存在进度条,与检查点的截图不一致,将返回False

'不好意思,请问怎样可以“循环监听”?

kursk 发表于 2007-6-11 11:19:26

原帖由 gotolife 于 2007-6-10 22:28 发表 http://bbs.51testing.com/images/common/back.gif



sdlkfj8 不是image检查点,是Bitmap检查点

把正常情况下,即该动画不可见的时候,在动画位置进行截图
点击上传后,可以延迟1秒
然后进入循环监听,若该位置的动画不可见时,该位置的截图和检查点的截 ...


这个方法真实绝了,俺太佩服你了

kursk 发表于 2007-6-11 11:23:11

原帖由 higkoo 于 2007-6-9 14:29 发表 http://bbs.51testing.com/images/common/back.gif



sdlkfj1 请问大侠一个很 羞涩 的问题:什么是同步点 啊?


同步点waitproprety 不能解决这个问题——如果网页元素的属性不发生改变

但是我有点想不通,等待图片从不显示到显示,那么它的visable的属性一定发生了改变,LZ是不是应该询问开发工程师这段代码的问题?

要不用上面说的BITMAP检查我想也可以啊

等着LZ的好消息

higkoo 发表于 2007-6-11 11:53:55

被这个问题给征服了

我尝试了用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
查看完整版本: QTP中使用 Exist 的问题