QTP对右键单击的操作不能识别,可以采用wsh的方式,实现右键选择的操作。wsh是通过模拟键盘,向激活窗口发送键值实现选择。
Window("A").WinListView("B").Click 150, 233, micRightBtn '右键单击出菜单
Window("A").WinObject("B").WinMenu("C").Select "新建(W);<Item 3>" '在弹出菜单中选择功能功能
上述代码在回放时回放不过去,改为
Window("A").WinListView("B").Click 150, 233, micRightBtn
Dim wshShell
Set wshShell = CreateObject("Wscrīpt.Shell")
For i=1 to MoveNum
wshShell.SendKeys "{DOWN}" '模拟键盘操作
Next
wait 1
wshShell.SendKeys "{ENTER}" '模拟键盘操作
set shell=nothing
上述代码在弹出菜单后可以实现向下移动选项,并选择的功能.MoveNum是移动的次数
附: wsh键值表
键 参数
退格键 {BACKSPACE}、{BS}或{BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL或DELETE {DELETE}或{DEL}
下箭头 {DOWN}
END {END}
ENTER {ENTER}或~
ESC {ESC}
HOME {HOME}
INS或INSERT {INSERT}或{INS}
左箭头 {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
右箭头 {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
上箭头 {UP}
F1、F2、F3...{F1}、{F2}、{F3}Q
http://blog.csdn.net/daisyysiad/article/details/4150723
基本上QTP识别针对鼠标右击并选择的操作有三种方法:
针对任何语言都适用的
1、创建Wscript.Shell对象
2、创建Mercury.DeviceReplay对象
3、针对Java/NET/WEB适用的FIREEVENT方法
不管什么架构什么语言的程序也好,要录制鼠标右击对象并选择弹出选项的操作一般来说都是三个步骤:
1、录制激活对象的操作
2、录制鼠标右键点击的操作
3、录制选取弹出选项的操作
下面就三个步骤分别说明:
第一步:如果被激活对象的方法参数中有BUTTON定义的话,那就只需加上对应的BUTTON值直接录到弹出右键,然后再录第三步的操作,而不需再去录第2步的操作(具体那些方法的参数中有带BUTTON的,有时间我会列个表出来)
对象方法中没有button参数的话那当然只能老老实实的录制或者用description program(描述性编程,简称dp)的方法激活对象。然后录制第2步
第二步第三步:针对那些录不到鼠标右击操作的对象,可以采用Wscript.Shell,或者Mercury.DeviceReplay的方法来模拟。
例如作这样一个录制(鼠标右击开始菜单,选取属性)
使用Wscript.Shell的方法如何录制:
|
Window("Window").WinButton("开始").Click 0, 0, micRightBtn Dim Wsh,n n=3 '对应循环的次数 Set Wsh=CreateObject("Wscript.Shell") For i=1 to 3 wait 1 '等待一秒可以清楚地看到效果 Wsh.SendKeys "{UP}" '相当于鼠标向上移动三次到属性的位置 Next Wsh.SendKeys "{Enter}" '按下回车键选取属性 Set Wsh=nothing '释放Wsh变量 |
使用Mercury.DeviceReplay对象如何录制:
|
'使用Mercury.DeviceReplay对象录制必须先知道对象的绝对坐标,所以的先执行下面的脚本/或者使用objectspy去识别录制对象的绝对坐标 Window("Window").WinButton("开始").Click 0, 0, micRightBtn Set ctlr = DotNetFactory.CreateInstance("System.Windows.Forms.Control") For i = 1 To 1 step 1 Wait 2 Print "1. X=" & ctlr.MousePosition.X & "; Y=" & ctlr.MousePosition.Y Next '得出当前对象的坐标后就可以录制右键操作了 Dim DevRep set DevRep=CreateobJECT("MERCURY.DeviceReplay") wait 1 DevRep.PressNKeys "72",3 模拟连续按下Up的操作循环三次 DevRep.PressKey "28" 模拟按下enter的操作 |