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

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

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

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

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2009

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

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

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

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-объект синхронизации-заказ функция /

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

3 голосов
/ 09 ноября 2009

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

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

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

...