FireEvent结合WSH实现右键菜单操作

   在qtp自动化测试过程中某些时候可能需要对某个对象进行右键操作,选择右键菜单中的菜单项,但是qtp中没有封装相应的选择右键菜单的方法,此时我们可以使用对象支持的FireEvent方法实现右键点击操作,然后结合wsh的sendkeys模拟键盘的上、下、左、右方向键及回车键实现对菜单的项的选择。
注意:在使用以上方法时,qtp回放模式需要设置为Mouse模式,具体的设置位置:Tools>Options>Web>advanced>Run Setting>Replay Type
 
以下代码是封装的一个鼠标操作类,将其保存为vbs文件即可(本文保存为MouseOperationClass.vbs,保存于的D:\),提供了以下方法:
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.调用鼠标操作类的点击右键方法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:=图片")
Set Mouse =  New MouseOperation
Mouse.ClickRightKey(obj) '在百度首页“图片”链接上点击右键
Mouse.moveDown(13) '选择右键菜单中的"所有加速器"
Mouse.moveRight(1) '展开"所有加速器"子菜单
Mouse.moveDown(4)  '选择"管理加速器..."
Mouse.Choose '选择"所有加速器"子菜单中的"使用"
Set Mouse = Nothing
posted @ 2013-11-07 15:35  芯树  阅读(418)  评论(0编辑  收藏  举报