锁屏时依然可以运行QTP脚本

QTP作为目前比较兴盛的自动化测试工具,其强大性自然不用多说,Google一下就知道了,当然,Selenium也不甘拜下风的,在测试多浏览器和多操作系统的兼容性时自然更胜一筹,另外还是开源的——免费!

由于这一两年一直在搞QTP,现在称UFT了,从自动化测试框架策划,到根据测试用例拆分AUT的功能点,再到design检查点,再到组脚本,再到后来的利用driver run脚本和显示报告,这期间问题还真不少,不过现在终于大功告成了,心里多少还是很happy的!

不过鉴于一个不是十分好search到的问题,以免将来有更多的人走上弯路,我想先share在这,以求共进!

因为要测试 IE8,9,10,又鉴于不想受到太多的辐射,所以,我们果断决定申请3台cloud server来用,可惜它是windows server 2008,大家知道这个server安全性配置都比较高啊,所以,首先要做的就是设置一下IE,降低它的security,然后再将本地的一些certificates导入进去,这一样一番折腾之后,还有一个问题就是QTP的test result不能很好的显示,不过这个对我们来说无伤大雅,毕竟cloud server上也就是用driver run的。好了,现在头疼的时候到了,既然我要用cloud server,那我不可能启动或者schedule一个task之后一直开着它吧,所以啊,关了,自个run去吧。可是最后发现这是不行的,关了cloud server,system is locked,那它就不支持window message的处理了,QTP中有很多方法是用来让system message 和application交互的,这些在replay的时候就会失败,比如WinButton这个家伙就hung了,总而言之就是说锁屏状态下QTP script就不能很好的Replay!一些需要和system message交互的操作就会失败!解决方案就是用win32 API来处理, code 如下:

Public Const WM_COMMAND = 273 'This constant is used to indicate we are going to interact with a Command dialog box
Public Const BM_CLICK = 245  'This constant is used to indicate we are going to interact with a File Dialog box
Extern.Declare micHwnd, "FindWindow", "user32.dll", "FindWindowA", micString, micString
Extern.Declare micHwnd, "FindWindowEx", "user32.dll", "FindWindowExA", micHwnd, micHwnd, micString, micString
Extern.Declare micLong, "PostMessage", "user32.dll", "PostMessageA", micHwnd, micLong, micLong, micLong
Extern.Declare micLong, "SendMessage", "user32.dll", "SendMessageA", micHwnd, micLong, micLong, micString
HandleAlert_Win32 2
'********************************************************************************************************************************************
'Function Name:                       HandleAlert_Win32
'Description:                             Handles the alert in QTP
'Parameters:                            buttonCode(the button that need to be clicked)
'Returns:                                   None
'Created By :                             Aaron Xu
'Creation Date                           3/13/2014
'*********************************************************************************************************************************************
Function HandleAlert_Win32(buttonCode)
	Hwnd = extern.FindWindowEx(0,0,vbNullString, "Message from webpage")
	lResult = extern.SendMessage(Hwnd, WM_COMMAND, buttonCode, 0) 
	Hwnd = extern.FindWindowEx(0,0,vbNullString, "Windows Internet Explorer")
	lResult = extern.SendMessage(Hwnd, WM_COMMAND, buttonCode, 0)
	Hwnd = extern.FindWindowEx(0,0,vbNullString, "Microsoft Internet Explorer")
	lResult = extern.SendMessage(Hwnd, WM_COMMAND, buttonCode, 0)
End Function




By the way, It looks like "FireEvent" and "Mercury.DeviceReplay" are doesn't work if you locked system screen to run your QTP scripts.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值