TestComplete: закрытие нежелательных окон
@ Пт, 21 декабря 2007, 11:15В TestComplete можно перехватить событие OnUnexpectedWindow и в случае появления какого-то конкретного окна выполнить определенные действия. Например, такая ситуация может возникнуть, если в приложении возникла ошибка, либо отключилась база данных, и т.п.
Однако это событие сработает лишь в том случае, если появившееся окно мешает работе скриптов. Если же окно не является модальным, либо появилось где-то в стороне, событие не сработает и TestComplete продолжит работу.
Если необходимо перехватывать такие окна, можно воспользоваться объектом Timer. Ниже приведен пример того, как во время задержки выполнения скрипта на 60 секунд отслеживать появление окна Калькулятора и убивать его процесс, если окно появилось.
Сначала необходимо написать функцию, которая проверяет наличие калькулятора и закрывает его в случае необходимости.
// TestComplete JScript
function KillCalculator()
{
if(Sys.WaitProcess("calc", 1, 1).Exists)
{
Log.Message("Calculator has been found");
Sys.Process("calc").Terminate();
}
}
А теперь напишем функцию, которая тестирует этот новый обработчик.
function test_timer()
{
Utils.Timers.Add(500, "MyUnit.KillCalculator", true);
BuiltIn.Delay(60000);
}
Здесь,
- 500 – интервал в миллисекундах, через который будет запускаться наша первая процедура;
- MyUnit.KillCalculator – имя процедуры, которая должна запускаться (обратите внимание, что надо указывать и юнит, и имя функции);
- true означает, что при создании таймера он автоматически включается.
Если запустить вторую процедуру и время от времени открывать Калькулятор - он будет тут же закрыт TestComplet'ом.
Для того, чтобы оставлять комментарии, вы должны войти под своим логином.
