关闭

QTP模拟鼠标和键盘事件整理

发表于:2008-12-16 14:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:asoqa整理    来源:51Testing博客

#
QTP
  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
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • mengdi007
    2013-2-18 17:56:19

    好棒,帮我解决了问题呢!谢谢!

关注51Testing

相关阅读

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号