QTP:JavaScript同步

时间:2010-07-22 11:57:22

标签: javascript synchronization qtp

有一个框架,内容由javascript加载。

<iframe ... onload="pageLoaded();">

QTP测试需要等到它完成加载。帧内容可能因用户设置而异,因此不能选择检查帧中元素的存在性。

有没有办法在QTP中等待所有内容加载而不试图检查是否存在某些元素?

1 个答案:

答案 0 :(得分:1)

有几种方法:

最简单的一个,在页面对象上使用隐藏同步方法:

oPage.sync    ' Where oPage is your page object

如果这不起作用,您可以获取浏览器对象的wait属性:

if oBrowser.WaitProperty("state", micRegExpMatch("4|complete"), 60 * 1000) then
    msgbox "Browser is ready!"
else
    msgbox "Even after 1 minute, the browser is not ready :("
end if

或者您可以获取状态栏,文本并查看其中是否有“等待”文本(仅限IE)

Set oStatusBar = Browser("micclass:=Browser").WinStatusBar("nativeclass:=msctls_statusbar32")
Do : Loop Until instr(oStatusBar.GetROProperty("text"), "Waiting") = 0

或进度条:

Set oProgressBar = Browser("micclass:=Browser").WinObject("nativeclass:=msctls_progress32")
Do : Loop Until oProgressBar.getROproperty("visible")

(代码简化。如您所知QTP,您必须在访问对象和属性之前检查它们是否存在。)