FireEvent结合WSH实现右键菜单操作
在qtp自动化测试过程中某些时候可能需要对某个对象进行右键操作,选择右键菜单中的菜单项,但是qtp中没有封装相应的选择右键菜单的方法,此时我们可以使用对象支持的FireEvent方法实现右键点击操作,然后结合wsh的sendkeys模拟键盘的上、下、左、右方向键及回车键实现对菜单的项的选择。
注意:在使用以上方法时,qtp回放模式需要设置为Mouse模式,具体的设置位置:Tools>Options>Web>advanced>Run Setting>Replay Type
注意:在使用以上方法时,qtp回放模式需要设置为Mouse模式,具体的设置位置:Tools>Options>Web>advanced>Run Setting>Replay Type
以下代码是封装的一个鼠标操作类,将其保存为vbs文件即可(本文保存为MouseOperationClass.vbs,保存于的D:\),提供了以下方法:
1.使用该类时自动设置qtp的回放模式为mouse模式,结束使用该类后自动设置qtp回放模式为event模式
2.提供右键点击操作方法
3.提示模拟按键盘上、下、左、右及回车键的方法
1.使用该类时自动设置qtp的回放模式为mouse模式,结束使用该类后自动设置qtp回放模式为event模式
2.提供右键点击操作方法
3.提示模拟按键盘上、下、左、右及回车键的方法
'###############################################################
'***************************************************************
'功能:右键点击对象及右键菜单选择
'参数:ojb - 支持FireEvent方法的对象;
' moveTime - 需要按某个方向键的次数
'***************************************************************
Class MouseOperation
Dim obj
Dim moveTime
'设置qtp回放模式为鼠标操作模式
Private Sub Class_Initialize
Setting.WebPackage("ReplayType") = 2
End Sub
'设置qtp回放模式为浏览器事件模式
Private Sub Class_Terminate
Setting.WebPackage("ReplayType") = 1
End Sub
'在对象上点击鼠标右键
Sub ClickRightKey(obj)
obj.FireEvent "onclick",,,micRightBtn
End Sub
'在右键菜单上鼠标向上移动选择菜单项
Sub moveUp(moveTime)
Set bjWSH = CreateObject("Wscript.Shell")
For i=0 To moveTime
objWSH.SendKeys "{UP}"
'Wait 1
Next
Set bjWSH = Nothing
End Sub
'在右键菜单上鼠标向下移动选择菜单项
Sub moveDown(moveTime)
Set bjWSH = CreateObject("Wscript.Shell")
For i=1 To moveTime
objWSH.SendKeys "{DOWN}"
'Wait 1
Next
Set bjWSH = Nothing
End Sub
'在右键菜单上鼠标向左移动选择菜单项
Sub moveLeft(moveTime)
Set bjWSH = CreateObject("Wscript.Shell")
For i=1 To moveTime
objWSH.SendKeys "{LEFT}"
'Wait 1
Next
Set bjWSH = Nothing
End Sub
'在右键菜单上鼠标向右移动选择菜单项
Sub moveRight(moveTime)
Set bjWSH = CreateObject("Wscript.Shell")
For i=1 To moveTime
objWSH.SendKeys "{RIGHT}"
'Wait 1
Next
Set bjWSH = Nothing
End Sub
'选择右键菜单项
Sub Choose()
Set bjWSH = CreateObject("Wscript.Shell")
objWSH.SendKeys "{ENTER}"
'Wait 1
Set bjWSH = Nothing
End Sub
End Class
'############################例子############################
以下是一个实例:
测试功能需求:
1.打开百度首页
2.在百度首页"图片"链接上点击鼠标右键
3.选择右键菜单中"所有加速器"下的"管理加载项..."菜单
以下是一个实例:
测试功能需求:
1.打开百度首页
2.在百度首页"图片"链接上点击鼠标右键
3.选择右键菜单中"所有加速器"下的"管理加载项..."菜单
脚本设置思路:
1.调用外部的鼠标操作类
2.调用鼠标操作类的点击右键方法ClickRightKey
3.调用鼠标操作类的按键盘向下方向键方法moveDown,按13次定位到菜单项"所有加速器"
4.调用鼠标操作类的按键盘向右方向键方法moveRight,按1次展开"所有加速器"子菜单
5.调用鼠标操作类的按键盘向下方向键方法moveRight,按4次定位到子菜单中的"管理加载项..."菜单
6.调用鼠标操作类的按键盘回车键方法choose,选择"管理加载项..."菜单
1.调用外部的鼠标操作类
2.调用鼠标操作类的点击右键方法ClickRightKey
3.调用鼠标操作类的按键盘向下方向键方法moveDown,按13次定位到菜单项"所有加速器"
4.调用鼠标操作类的按键盘向右方向键方法moveRight,按1次展开"所有加速器"子菜单
5.调用鼠标操作类的按键盘向下方向键方法moveRight,按4次定位到子菜单中的"管理加载项..."菜单
6.调用鼠标操作类的按键盘回车键方法choose,选择"管理加载项..."菜单
以下是qtp代码:
'加载外部鼠标操作类
executefile "d:\MouseOperationClass.vbs"
'关闭ie浏览器
Systemutil.CloseProcessByName "iexplore.exe"
'打开百度首页
Systemutil.Run "www.baidu.com"
set bj = Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").Link("html tag:=A","name:=图片")
executefile "d:\MouseOperationClass.vbs"
'关闭ie浏览器
Systemutil.CloseProcessByName "iexplore.exe"
'打开百度首页
Systemutil.Run "www.baidu.com"
set bj = Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").Link("html tag:=A","name:=图片")
Set Mouse = New MouseOperation
Mouse.ClickRightKey(obj) '在百度首页“图片”链接上点击右键
Mouse.moveDown(13) '选择右键菜单中的"所有加速器"
Mouse.moveRight(1) '展开"所有加速器"子菜单
Mouse.moveDown(4) '选择"管理加速器..."
Mouse.Choose '选择"所有加速器"子菜单中的"使用"
Set Mouse = Nothing
Mouse.ClickRightKey(obj) '在百度首页“图片”链接上点击右键
Mouse.moveDown(13) '选择右键菜单中的"所有加速器"
Mouse.moveRight(1) '展开"所有加速器"子菜单
Mouse.moveDown(4) '选择"管理加速器..."
Mouse.Choose '选择"所有加速器"子菜单中的"使用"
Set Mouse = Nothing