QTP+VM: почему команда Click не выполняется, если я не подключен к виртуальной машине через удаленный рабочий стол?

Я использую QTP 10 вместе с VMWare для тестирования приложения Siebel. Я выполняю следующий код, чтобы нажать на кнопку Сохранить.

Browser("Siebel").Dialog("Filedownload").WinButton("Save").Click

Код работает отлично, когда я подключен к виртуальной машине через удаленный рабочий стол.

С другой стороны, когда я запускаю тест QTP через планировщик, без подключения к удаленному рабочему столу, приведенный выше код завершается ошибкой без каких-либо сообщений об ошибках. WinButton просто не нажимается.

Любая идея?

2 ответа

Решение

Просто чтобы добавить из моего опыта.

В некоторых компаниях, в которых я работал, я не мог изменить настройки заставки или режима ожидания из-за политики безопасности. ПК вызывал заставку во время длительных периодов синхронизации (например, генерация действительно большого отчета), и выполнение было прервано.

Чтобы избежать этого, я создал простую функцию "Anti Sleep", которая слегка "двигает" мышь каждые 5 минут. http://automation-beyond.com/2009/08/18/anti-sleep-function/

Private Const SleepTime_Max = 300 ‘ 5 minutes
Public Function AntiSleep()
Dim iter
Dim objTimer
Dim objDeviceReplay
Dim intTimeElapsed

 Set objTimer = MercuryTimers(“AntiSleep”)
 intTimeElapsed = CInt(objTimer.ElapsedTime/1000)

 If intTimeElapsed = 0 Then
  MercuryTimers(“AntiSleep”).Start
  Exit Function
 End If

 If intTimeElapsed < SleepTime_Max Then
  Exit Function
 End If

Set objDeviceReplay = CreateObject(“Mercury.DeviceReplay”)

 For iter = 100 To 110
   objDeviceReplay.MouseMove iter,300
 Next

MercuryTimers(“AntiSleep”).Start

Set objDeviceReplay = Nothing

End Function

Пример использования его в пользовательской функции синхронизации: http://automation-beyond.com/2009/08/20/gui-object-synchronization-custom-function/

Спасибо, Альберт Гареев

QTP не может взаимодействовать с заблокированным рабочим столом, поэтому он будет работать только для вас при интерактивном входе в систему локально или через RDP. Это хорошо известное ограничение QTP, большинство инженеров по автоматизации в какой-то момент проходят через эту боль.:)

Точнее говоря, он не может взаимодействовать с объектами Win32 (не может придумать лучшего способа его размещения), поэтому он без проблем будет взаимодействовать с основными элементами управления браузером на заблокированном рабочем столе, но всплывающие окна браузера и приложения Windows могут не взаимодействовать в этих обстоятельствах.

Я настоятельно рекомендую (если ваша системная политика позволяет) установить что-то вроде UltraVNC или другой вариант VNC для взаимодействия с удаленными компьютерами. Таким образом, вы можете оставить рабочий стол удаленного компьютера включенным и активным в любое время. Поскольку это виртуальная машина, она также не должна вызывать серьезных проблем с безопасностью. Убедитесь, что вы отключили все экранные заставки и не блокируете рабочий стол автоматически. QTP должен нормально работать, если вы это сделаете.

Другие вопросы по тегам