有一个框架,内容由javascript加载。
<iframe ... onload="pageLoaded();">
QTP测试需要等待直到完成加载。框架的内容可以根据用户设置而有所不同,因此,检查框架中元素是否存在不可行。
是否有一种方法可以在QTP中等待所有内容加载完毕而无需尝试检查某些元素的存在?
最佳答案
几种方法:
最简单的一种方法是在页面对象上使用隐藏的同步方法:
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
或者,您可以获取状态栏,文本并查看其中是否有文本“ Waiting”(仅适用于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,在访问它们之前,必须检查对象和属性的存在。)