动态等待QTP

时间:2015-02-19 12:58:12

标签: vba qtp

我正在使用QTP测试网站,以确保所有链接都在脚本访问的页面上工作/我正在使用QTP具有的标准检查点。我遇到的一个问题是,由于页面上的图片和其他网页元素,某些页面需要花费大量时间才能加载。当页面需要很长时间加载时,有时会导致Checkpoint失败,因为脚本在导航之前不会捕获页面上的所有链接(或者至少这是我的理解)。我通过在所有页面上插入等待(10)来解决这个问题,并且确实在98%的时间内工作(某些页面具有可怕的延迟时间)。但是我想知道是否有人编写一个脚本,以便在移动到检查点之前等待页面完全加载?

我的代码看起来像

Browser(Blah).Navigate URL
wait(10)
Browser(blah).Page(X).Check Checkpoint(K)
Browser(Blah).Navigate URL2
wait(10)
Browser(blah).Page(X).Check Checkpoint(K2)

根据我运行的脚本,它可以检查多达200页并运行几个小时,所以我希望如果我可以在每个页面上使用静态等待,我可以提高性能。

2 个答案:

答案 0 :(得分:1)

使用ReadyState枚举:(MSDN page

Enum READYSTATE
    READYSTATE_UNINITIALIZED = 0
    READYSTATE_LOADING = 1
    READYSTATE_LOADED = 2
    READYSTATE_INTERACTIVE = 3
    READYSTATE_COMPLETE = 4
End Enum

With Browser(blah)
    .Navigate URL
    '// Wait until page has fully loaded.
    While Not .ReadyState = READYSTATE_COMPLETE
        DoEvents
    Wend

'// Rest of code here...
End With

答案 1 :(得分:1)

添加检查点时,您还可以将检查点超时配置为 n 秒数,默认情况下设置为10秒

E.g。如果将此值设置为20秒,如果检查点在10秒内通过,则QTP将立即进入下一步。如果检查点在20秒内没有通过,那么它将被标记为失败。

尽量避免使用Wait语句,尝试探索其他选项,例如.Sync.Exist