QTP+VM:为啥当我没有通过远程桌面连接到虚拟机时,点击命令没有执行?
Posted
技术标签:
【中文标题】QTP+VM:为啥当我没有通过远程桌面连接到虚拟机时,点击命令没有执行?【英文标题】:QTP+VM: Why is the Click command not executed when I'm not conncted to the VM via Remote Desktop?QTP+VM:为什么当我没有通过远程桌面连接到虚拟机时,点击命令没有执行? 【发布时间】:2010-12-14 14:19:06 【问题描述】:我正在使用 QTP 10 和 VMWare 来测试 Siebel 应用程序。 我正在执行以下代码以单击保存按钮。
Browser("Siebel").Dialog("Filedownload").WinButton("Save").Click
当我通过远程桌面连接到虚拟机时,代码运行良好。
另一方面,当我通过调度程序开始 QTP 测试时,没有远程桌面连接,上面的代码失败,没有任何错误消息。 WinButton 根本没有被点击。
有什么想法吗?
【问题讨论】:
【参考方案1】:只是根据我的经验补充一下。
在我工作的一些公司中,由于安全政策,我无法更改屏幕保护程序或待机设置。一台 PC 在长时间同步期间(例如生成非常大的报告)显示屏幕保护程序,并且执行中断。
为了避免这种情况,我创建了简单的“反睡眠”功能,每 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/
谢谢你, 阿尔伯特·加里耶夫
【讨论】:
谢谢,这对我有用,但我必须使用“objDeviceReplay.MouseClick 100, 200, 0”,因为 MouseMove 只是不能保持 VM 连接处于唤醒状态。 哦,是的,这完全正确,如果它在远程连接下你也必须点击(如果它在普通桌面上,只移动就足够了)。我只是没有将单击作为同步循环中的默认操作,因为有时单击可能会触发您不想要的东西。但是在上层同步循环中,我有一个代码片段定期单击窗口的标题栏,该窗口正在生成报告或做一些其他思考的事情。谢谢。【参考方案2】:QTP 无法与锁定的桌面交互,这就是为什么它仅在本地或通过 RDP 以交互方式登录时才对您有效。这是 QTP 的一个众所周知的限制,大多数自动化工程师在某些时候都会经历这种痛苦。 :)
更具体地说,它不能与 Win32 对象交互(想不出更好的放置方式),因此它会与锁定桌面上的基本浏览器控件交互没问题,但浏览器弹出窗口和在这些情况下,无法与 Windows 应用程序进行交互。
我强烈建议(如果您的系统策略允许)您安装类似 UltraVNC 或其他 VNC 变体的东西来与您的远程计算机交互。这样您就可以让远程计算机的桌面始终处于登录状态并处于活动状态。因为它是一个不应该给你带来任何重大安全问题的虚拟机。确保关闭所有屏幕保护程序并且也不要自动锁定桌面。如果你这样做,QTP 应该对你很好。
【讨论】:
以上是关于QTP+VM:为啥当我没有通过远程桌面连接到虚拟机时,点击命令没有执行?的主要内容,如果未能解决你的问题,请参考以下文章
vm虚拟机为啥用ifconfig命令查看不到ip呢?导致无法连接到ssh,求各位大侠解惑.