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 должен нормально работать, если вы это сделаете.