【如何在Windows Logout状态下点击鼠标?】
{)Y/WE,ov&Y0作者:卢晨之
iS"Y8Vy!Np0转载请注明
l3ovK:l
H4z:H;v(z'Du^:W0 在QTP的脚本中,部分窗口或者按钮的点击,我们录制时候是使用的WinObject.Click方法,但或者也是遵循自动化测试的原则,QTP在实现这个方法的时候基本都是采用MoveMouse与Mouse Click的方法去做,而在某些情况下,这种方法是会失效的。
8t\}r h:x9@4d0 而有趣的是,在Web测试领域方面,QTP中包括Click Link,Click WebButton等方法都是采用了发送消息的方法去实现,也就是调用了DOM去实现而非前台的MoveMouse之类的方法;SAP的实现方法也一样,调用了SAP自带的接口与方法,也是使用了后台发送消息的方法。所以对于使用QTP老鸟们来说,或者会遇到在Windows 待机或者LogOut的状态下,对IE的Popup处理得很不好。而如果有读过小编前面写的【Python 操作IE的弹出窗口】,应该看到里面点击按钮的方法使用的不是move Mouse与Click Mouse的组合,取而代之的是Win32中的SendMessage。而这个方法的好处也就是在LogOut或者非Active状态下都能被点击到。
[6F[Ls P051Testing软件测试网P^V1ofO mFExtern.Declare micvoid,"SendMessage","user32.dll","SendMessage",micHwnd,miclong,miclong,miclong
)udZfjnS6GV#f0Const WM_MOUSEMOVE = &H200
EUJ8E?)GP{0Const WM_MOUSEACTIVATE = &H21
F8Y*Uu^#nhB0Const WM_MOUSEFIRST = &H200
:asNb |Jm4mS0Const WM_MOUSELAST = &H209 51Testing软件测试网8Bs$?2U zt4fd
Const WM_LBUTTONUP = &H202 51Testing软件测试网7p+}*g|)x:Njg
Const WM_LBUTTONDOWN = &H201 51Testing软件测试网7~P^3w Djz;gK+o
Const WM_LBUTTONDBLCLK = &H203 51Testing软件测试网\.LM-]|X+D b
Const WM_RBUTTONUP = &H205 51Testing软件测试网L'|Pkei3o
Const WM_RBUTTONDOWN = &H204
,p3U])b%J8G4j/t0Const WM_RBUTTONDBLCLK = &H206
+i'A#laomnhb051Testing软件测试网"I3uiT['Uv x:zd-z0whwnd=Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").GetROProperty("Hwnd")51Testing软件测试网h;A-{sL_
Extern.SendMessage hwnd,WM_LBUTTONDOWN,WM_MOUSEACTIVATE,0
SnR#D;J4O0V&Y0Extern.SendMessage hwnd,WM_LBUTTONUP,0,051Testing软件测试网$EEl7t1Ex*f
Extern.SendMessage hwnd,WM_LBUTTONDOWN,WM_MOUSEACTIVATE,0
9r[,Ez\1a0Extern.SendMessage hwnd,WM_LBUTTONUP,0,0
NS,Q$Se*k;I'S02EtDB,r0'代码中发送2次同样的消息是为了更稳定的点击到这个对象。
LxR~7o7r0 我们使用SendMessage这个方法后,即使在LogOut的状态下,我们也能操作WinObject的对象,而不仅仅局限于SAP,WEB的程序。
*bS&@MX~0