QTP: синхронизация JavaScript - PullRequest
1 голос
/ 22 июля 2010

Есть фрейм, содержимое которого загружается с помощью javascript.

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

Тест QTP должен ждать до завершения загрузки.Содержимое фрейма может отличаться в зависимости от пользовательских настроек, поэтому проверка наличия элемента в фрейме не является опцией.

Есть ли способ подождать в QTP, пока весь контент не будет загружен без попытки проверки на существованиекакого-то элемента?

1 Ответ

1 голос
/ 01 февраля 2011

Несколько способов:

Самый простой способ - использовать скрытый метод синхронизации для объекта страницы:

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, вы должны проверить наличие объектов и свойств, прежде чем получить к ним доступ.)

...