наблюдаю странную ситуацию. Есть главное приложение, из него из пункта меню вызывается модальное окно и закрывается кнопкой в самом окне. Скрипт выглядит примерно вот так:
p.VCLObject('MainF').MainMenu.Click('[0]|[9]|[0]'); NewF := p.WaitVCLObject('NewForm',5000); if not NewF.Exists then Exit; // Nothing to do //... Test form NewF w2:=NewF.VCLObject('pnButtons').VCLObject('btnClose'); w2.ClickButton;
Так вот - при выполнении скрипта (ТС 4.30) иногда это новое окно не закрывается, причем оно становится не модальным, "ныряет" под основную форму и основное окно приложения естественно виснет намертво. Через два раза на третий скрипт отрабатывает успешно. Изменение параметра проекта в ТС Delay between events не помогает.
Само приложение откомпилировано как Open application. Вот фрагмент кода самой программы (Delphi), где вызывается это модальное окно:
with TNewForm.Create(Application) do try begin ShowModal; end; finally Free; end;
Исследования в Object Browser во время выполнения скрипта и распечатка списков дочерних объектов основной формы (их до 50-ти) до открытия модальной формы, после открытия и после закрытия показали, что форма NewForm таки да не всегда "уходит" из перечня объектов, а вместо этого в ТС идет перетасовка и изменение количества объектов Window('TPUtilWindow','',*), причем таких объектов может быть до 26-ти. Мне удалось только выяснить, что эти 'TPUtilWindow' являются порождением самого ТС, причем в Open Application.
Может быть, кто-то знает, что это за объекты и каким контролом тестируемого приложения они создаются? Дело в том, что в тестовом приложении (два окна, по две-три кнопки в каждом и тот же метод ShowModal), которое я создаю, чтобы смоделировать ситуацию и, возможно, отправить в AutomatedQA, у меня этих 'TPUtilWindow' в Object Browser видно только 2.