51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6861|回复: 13
打印 上一主题 下一主题

[原创] QTP模拟鼠标和键盘事件整理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-12-15 19:51:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整理了一下曾经用到的方法,大家看看还有没有补充的。

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 使用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("WScript.Shell")
WshShell.SendKeys "{DOWN}"

2.2 使用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的使用要方便一点,但是稳定性不如后者

http://www.51testing.com/?233320

[ 本帖最后由 asoqa 于 2008-12-18 16:23 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-12-15 20:04:22 | 只看该作者
漏了一个,补充一下:
Set devReplay = CreateObject("mercury.devicereplay")
devReplay.MouseClick absx+4,absy+4,2
同样的用mercury.devicereplay也可以模拟键盘操作。
关于这个对象的使用,下面这篇文章介绍的不错:http://www.51testing.com/?161787 ... e_itemid_84200.html
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-12-16 21:42:04 | 只看该作者
非常全面,收藏了。很奇怪,这样的文章没有人顶,唉!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-12-18 09:45:12 | 只看该作者
收藏了,顶!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-12-18 10:10:57 | 只看该作者
收藏
ding
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-11-17 16:21:56 | 只看该作者
请问“devReplay.MouseClick absx+4,absy+4,2”中的2是代表什么啊,是点击鼠标的方式吗
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-11-18 15:31:00 | 只看该作者
识别对象,首先通过Tools-Object Identification-Standard Windows中的四个属性:
1.Mandatory properties
2.Assistant properties
3.Smart Identification
4.Ordinal Identifier-Index

如果以上都搞不定,才用LZ的建议,毕竟Built-in的功能要稳定一点。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-11-18 17:20:54 | 只看该作者
好东西  学习了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    9#
    发表于 2010-7-26 16:09:45 | 只看该作者
    因为当文本框的内容输入完成之后会把页面上的数据都走后台刷出来,现在用qtp的set好像页面上和sendkey ""都不刷了,我们是以键盘弹起的事件来刷数据的,请问要怎样操作?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-11-15 14:58
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    10#
    发表于 2010-7-26 17:16:33 | 只看该作者
    顶起来,比较急,那位大虾帮忙
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-4-26 12:45
  • 签到天数: 3 天

    连续签到: 2 天

    [LV.2]测试排长

    11#
    发表于 2014-1-8 17:56:47 | 只看该作者
    学习了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-15 18:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2014-2-11 16:55:18 | 只看该作者
    不错!学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2014-2-11 23:32:09 | 只看该作者
    不错!学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-15 18:25
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2014-3-7 12:53:05 | 只看该作者
    学习了!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 13:36 , Processed in 0.080424 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表