我正在使用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页并运行几个小时,所以我希望如果我可以在每个页面上使用静态等待,我可以提高性能。
答案 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
。