很多时候,qtp对于模拟对象右击并选择某个弹出选项的操作识别率并不好。
个人总结了一些比较常见也比较有效的方法。
基本上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的操作
个人总结了一些比较常见也比较有效的方法。
基本上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的操作