等到应用程序开始响应 - 如何在qtp中编码?

时间:2010-06-11 11:37:55

标签: qtp

我们有一个应用程序,其中正在加载某些文件,并且应用程序在加载文件期间停止响应一段时间。在测试自动化期间,我们遇到了文件加载自动化的情况,但是qtp必须等到应用程序再次开始响应。如何编码?任何财产都像“等待”?

7 个答案:

答案 0 :(得分:2)

在启用了应用程序对象(例如按钮)的位置插入同步点。同步点允许您指定超时时间。

答案 1 :(得分:2)

  
    

任何属性都像“等待”?

  

如果是这样,那么它是特定于应用程序的,所以要回答那个需要对您的应用程序的GUI设计进行技术审视。

一般来说,请考虑一个人类用户如何看待应用程序再次“响应”。通常,有一些视觉提示,如出现按钮,或者某些控件不再显示为灰色。使用同步点在该状态上同步。

如果全部失败(即如果您无法识别出在应用程序处理结束时出现,消失或更改其属性的控件),请坚持使用位图检查点,该检查点将查找人类将解释的相同视觉线索。

通常,在应用程序准备再次接受输入之前,同步点或视觉提示有点过早。然后,如果您的应用程序在预期下一个用户输入之前刷新键盘缓冲区(一个广泛常见的错误设计示例...),您将很难正确同步。击键和鼠标点击将丢失。在这种情况下,您应该a)通过在下一个输入之前插入延迟(等待函数调用)来解决问题,b)确定应用程序永远不会刷新其输入队列,c)强制视觉线索仅在应用程序之后完成真的准备接受输入。 当然,b)和c)需要开发人员的工作,并且可能在组织上难以实现。

如果问题出现在不同的甚至是所有的上下文中,请将其传达给测试管理,让他们让开发人员为您的测试机器人实现自定义的“就绪”信号。然后,您可以从QTP查询该信号。它可以是一个信号量,一个Windows字符串属性(Set / GetPropEx API调用),一个文件存在(baaad idea ..),或者从应用程序到测试机器人传递“就绪”状态的一些其他不安全但不同步的方式。

这一切听起来都很疯狂,但我已经完成了上述所有工作,结果通常很好。

答案 2 :(得分:2)

如果需要快速而肮脏的修复,可以使用通用等待(秒)。例如,如果您知道您的应用程序可以在不到一分钟的时间内使用。但是,如果它根据数据量而有所不同,您可以尝试在处理完所有数据后加载的应用程序中使用控件的“Exist”属性。 即。

while not loaded
wait(1)
loaded = Window.Control.Exist
Wend

答案 3 :(得分:2)

在我看来,最简单可靠的解决方案是直接从user32.dll调用WinAPI的 IsHungAppWindow 。 QTP允许您轻松声明外部函数。

答案 4 :(得分:0)

假设您的应用程序最多需要2分钟才能启动。使用下面的函数来了解您的应用程序是否存在...

function checkWindowExistance()

dim i

I = 0

表示i = 0到120

如果是Window.Dialog.Exist

{

       exit for

}

等待(1)'wait_for_1_second

下一步

如果i = 120那么

checkWindowExistance = false

否则

checkWindowExistance = true

结束功能

答案 5 :(得分:0)

等待 WaitProperty 同步这三个是使页面保持同步的主要属性或方法

等待大多数程序员使用。

但完整页面需要更好地同步才能使用“.Sync” 它将检查,直到同步超时,如果加载成功,它将移至下一步

但等待,直到给定的时间,虽然在时间内发现了对象

答案 6 :(得分:-1)

我们可以使用While循环等待应用程序页面屏幕可见,一旦加载,脚本应该继续下一个屏幕