zoukankan      html  css  js  c++  java
  • QTP模拟鼠标和键盘事件整理

    整理者:asoqa整理
    1、鼠标事件

      1.1 使用自带的Click方法

      看QTP的帮助,每个对象都有自带的Click方法,通过其中第三个参数指定具体的鼠标事件

      例如:

      Browser("New Page").page("New Page").WebElement("html tag:=Form").Click

      0,0,micRightBtn

      注意Click方法的前两个参数是相对坐标,即相对于对象控件左上角的坐标。

      然而执行脚本时常常发现右键功能无法回放。这需要通过设置回放级别解决。例如:

      Setting.WebPackage("ReplayType") = 2

      Browser("New Page").page("New Page").WebElement("html tag:=Form").Click

      0,0,micRightBtn

      Setting.WebPackage("ReplayType") = 1

      1.2 使用自带的FireEvent方法

      具体使用参考QTP的帮助吧,需要提醒一下,右键菜单的弹出对应的是"oncontextmenu"事件,这个帮助里没有提到,当然依赖于开发的代码实现。

      1.3 使用mercury.devicereplay

      Set devReplay = CreateObject("mercury.devicereplay")

      devReplay.MouseClick absx+4,absy+4,2

      1.4 使用Windows底层的mouse_event

      如果上面的方法仍然不管用,就要采用更底层的方法了。不过这种方式不推荐,因为mouse_event识别的是绝对坐标,你还需要在调用 mouse_event前获取对象的绝对坐标。需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,用0,0表示,会被认为是当前鼠标所在的点。

      Extern.Declare micVoid, "mouse_event", "user32.dll", "mouse_event", micByte,micByte,micDWord,micULong

      Extern.mouse_event MOUSEEVENTF_RIGHTDOWN,0,0,0

      2、键盘事件

      2.1 SendKeys

      最常用的模拟键盘操作的事件就是SendKeys了,具体说明一样参考QTP的帮助。

      需要说明的是QTP帮助中的例子,需要做一些调整,QTP中执行不需要显示指定Wscrīpt执行shell命令,否则会报错。正确的例子如下:

      Set WshShell = CreateObject("Wscrīpt.Shell")

      WshShell.sendKeys "{DOWN}"

      2.2 Mercury.DeviceReplay

      Set devReplay = CreateObject("mercury.devicereplay")

      devReplay.SendString("a")

      下面这篇文章介绍的比较清楚。

      http://www.51testing.com/?161787/action_viewspace_itemid_84200.html

      2.3 使用Windows底层的keybd_event

      Extern.Declare micVoid, "keybd_event", "user32.dll", "keybd_event", micByte,micByte,micDWord,micULong

      Extern.keybd_event 42,0,0,0

      注意一下这里的第一个参数是10进制的。

      SendKeys的使用要方便一点,但是稳定性不如后者,

      Function RtClick( Obj )

      absx = Obj.GetROProperty("abs_x")

      absy = Obj.GetROProperty("abs_y")

      Set devReplay = CreateObject("mercury.devicereplay")

      devReplay.MouseClick absx+4,absy+4,2

      set devReplay = nothing

      End Function

  • 相关阅读:
    10 个十分难得的 javascript 开发经验
    牛人推荐的跨浏览器兼容性总结
    不可不看!CSS3中三十一种选择器用法
    jQuery制作鼠标经过显示图片大图,生成图片tips效果
    解决IE6中 PNG图片透明的终极方案-八种方案!
    关于JavaScript代码的执行效率总结
    【我们开发有力量之二】利用javascript制作批量网络投票机器人(自动改IP)
    网页制作中最有用的免费Ajax和JavaScript代码库
    纯javascript代码实现浏览器图片选择预览、旋转、批量上传
    悲催的IE6 七宗罪大吐槽(带解决方法)第二部分
  • 原文地址:https://www.cnblogs.com/zthua/p/2853357.html
Copyright © 2011-2022 走看看