5

我已经用这种.Exist方法做了很多工作,但我最近转移到了一个带有 QTP 11 的新项目(现在使用 WPF 应用程序)(而以前我有 QTP 10)。

现在我想通过使用来检查消息是否不存在object.Exist(2)。奇怪的是,我只在大约 23 秒后得到结果,而不是我预期的 2 秒。

超时如何工作?在以前的项目中,usingobject.Exist(2)会等待 2 秒,然后再确定对象不存在。QTP 帮助文件还说它应该只等待 2 秒(指定的超时参数)。现在,它似乎在等待超时参数(2 秒)和对象同步超时(20 秒)。

此外,智能识别已禁用,因此不应等待。使用对象存储库突出显示对象会立即表示该对象不存在。

QTP v10 和 v11 之间的超时行为是否发生了变化?为什么说一个对象不存在需要这么长时间?

4

5 回答 5

3

Exist 方法仅对最后一个对象不起作用。它是分层工作的 - 这意味着此方法在检查最后一个之前检查每个父对象。超时仅适用于最后一个对象。如果您想立即收到答案,我建议您使用以下代码-

if WPFWindow("x").Exist(0) Then
   if WPFWindow("x").WPFButton("y").Exist(0) Then
     'action 
   End if
End if
于 2015-02-16T07:09:24.220 回答
0

确保您没有为对象存储库中的测试对象启用“智能识别”。这可能会妨碍您。

于 2013-01-17T23:57:39.497 回答
0

您遇到的额外时间是默认超时设置,默认设置为 20 秒。任何 Wait 或 Exist 计时器都将堆叠在默认超时之上。

可以在测试设置中更改:

Test Settings > Run > Object synchronization timeout - set in seconds

或在 vbscript 中:

Setting("DefaultTimeout") = 4000 'set in milliseconds
于 2013-08-29T07:40:30.753 回答
0

我建议只使用默认超时。使用 .Exist(x) 将为每个孩子使用提到的时间。

于 2019-11-18T21:24:55.860 回答
0

在驱动程序脚本的开头使用 DefaultTimeout 函数就足够了。

Setting("DefaultTimeout") = 10000   'set in milliseconds

如果任何对象超过上述 10 秒的超时限制,则该对象将无法被捕获并且运行结果将显示失败

于 2018-12-19T08:51:21.907 回答