В 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'ом.

Для того, чтобы оставлять комментарии, вы должны войти под своим логином.