2

我们有一个应用程序正在加载一些文件,并且在加载文件期间应用程序停止响应一段时间。在测试自动化期间,我们遇到了文件加载自动化的场景,但 qtp 必须等到应用程序再次开始响应。如何编码?有没有像“Wait”这样的属性?

4

7 回答 7

2

有没有像“Wait”这样的属性?

如果是这样,那么它是特定于应用程序的,因此要回答这个问题,需要对应用程序的 GUI 设计进行技术研究。

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

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

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

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

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

于 2010-06-11T15:25:14.950 回答
2

如果您想要快速而肮脏的修复,您可以使用通用的等待(秒)。例如,如果您知道您的应用程序将在不到一分钟的时间内准备好使用。但是,如果它因数据量而异,则可以尝试在处理完所有数据后加载的应用程序上使用控件的“存在”属性。IE。

while not loaded
wait(1)
loaded = Window.Control.Exist
Wend
于 2010-06-11T20:21:18.747 回答
2

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

于 2010-06-11T13:23:21.643 回答
2

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

于 2010-08-04T20:12:19.440 回答
0

WaitWaitProperty Sync 这三个是保持页面同步的主要属性或方法

Wait 会被大多数程序员使用。

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

但是等待等待直到给定的时间,尽管及时发现了对象

于 2014-07-25T10:24:04.150 回答
0

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

函数 checkWindowExistance()

昏暗的我

我=0

对于 i=0 到 120

如果 Window.Dialog.Exist

{

       exit for

}

等待(1)'wait_for_1_second

下一个

如果 i = 120 那么

checkWindowExistance = 假

别的

checkWindowExistance = true

结束函数

于 2013-02-05T11:05:31.040 回答
-1

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

于 2010-10-01T05:28:05.373 回答