Я предполагаю, что, поскольку диалог является модальным, метод ShowOpen
не возвращает управление выполнением обратно в сценарий, пока диалоговое окно не будет закрыто. Поэтому нет возможности взаимодействовать с диалогом как частью вашего тестового сценария.
В качестве обходного пути вы можете запустить параллельный скрипт, который будет ждать диалога и активировать его. Но я предполагаю, что QTP не может запускать два сценария параллельно, поэтому вам, вероятно, понадобится сценарий внешней оболочки (написанный на VBScript / JScript / PowerShell / etc).
Редактировать: Попробуйте следующее:
Создайте внешний файл VBScript (.vbs) со следующим содержимым:
Set oShell = CreateObject("WScript.Shell")
While Not oShell.AppActivate("Open")
WScript.Sleep 500
Wend
Этот скрипт вызывает WshShell.AppActivate
, чтобы активировать окно, заголовок которого содержит Open
(замените его фактическим заголовком диалога). Если такого вдова у монента нет, он повторяет попытку через 0,5 с (вы можете увеличить задержку, если хотите).
Запустите этот скрипт из вашего теста QTP перед открытием диалогового окна. (Используйте SystemUtil.Run
или что-то вроде этого.)
Я не уверен, но я думаю, что это должно сработать.