51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3484|回复: 6
打印 上一主题 下一主题

[原创] 使用FireEvent实现多样化对象操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-13 12:56:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近有人问我,有这样一个自动化的需求,该怎么实现:
    把鼠标移到某个链接上,但不点击。该链接上利用css或js实现了某些效果或事件,但触发方式并不是点击,而是将鼠标移动过去(并非焦点移动过去)。
    以中国雅虎首页的效果为例,以下代码实现了模拟鼠标从“站长天下”“今日焦点”“邮箱”“建站”“空间”“群组”“相册”顺次移动的过程:
Option Explicit
'定义变量
Dim oWin32    'win32对象
Dim sTitle    '页面标题
Dim arrLinkText    '链接文字数组
Dim sLinkText    '链接文字
Dim sEventName    '操作事件名称
Dim iWaitTime    '两次操作时间间隔
Dim iIdentifyTimeOut    '识别对象超时时间
Dim n    '循环变量
Main
Sub Main
Set oWin32 = CreateObject("wscrīpt.shell")
sTitle = "中国雅虎.*"
arrLinkText = split("站长天下;今日焦点;邮箱;建站;彩票;空间;群组;相册",";",-1,1)    '定义链接文字数组
sEventName = "onmouseover"    '鼠标移到对象上的事件
iWaitTime = 1    '操作等待1秒
iIdentifyTimeOut = 3    '识别对象存在性超时时间设置为3秒
oWin32.Run("http://cn.yahoo.com/")    '打开浏览器,进入中国雅虎首页
For n=0 to ubound(arrLinkText)
  Wait iWaitTime    '操作等待
  sLinkText = arrLinkText(n)    '从链接文字数组中取出链接文字
  moveMouseOnIt    '调用操作时间函数
Next
Browser("title:="&sTitle).Close    '执行完毕关闭浏览器
End Sub

Function moveMouseOnIt()
'检查链接是否存在,存在则触发事件
If Browser("title:="&sTitle).page("title:="&sTitle).link("innertext:="&sLinkText,"index:=0").Exist(iIdentifyTimeOut) Then
  Browser("title:="&sTitle).page("title:="&sTitle).link("innertext:="&sLinkText,"index:=0").FireEvent sEventName   
  moveMouseOnIt = True
  Reporter.ReportEvent micPass,sEventName,"Trigger the event """&sEventName&""" successfully."
Else
  moveMouseOnIt = False
  Reporter.ReportEvent micFail,sEventName,"Fail to trigger the event """&sEventName&""" because of the absence of the link."
End If
End Function
    运行后会发现有一步执行抛出了Fail,检查是一个名为“彩票”的链接不存在导致;原来中国雅虎不提供彩票服务啊~^_^
    所实现代码中最关键部分是FireEvent方法,针对Link对象,该方法除了onmouseover时间, 还有onchange, onclick, ondblclick, onblur, onfocus, onmousedown, onmouseup, onmouseout, onsubmit, onreset, onpropertychange事件可以使用,涵盖了目前我们所能做的全部操作。
    至于其它对象的FireEvent方法,请参照QTP帮助文档中的FireEvent Method定义。
    灵活运行FireEvent方法,可以很容易操纵页面对象触发各种事件,对自动化功能实现的程度也很有帮助。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-7-30 22:56:18 | 只看该作者
很好,谢谢楼主的代码。
关于fireevent这个的,我其实也不大清楚怎么操作,谢谢你这帖子。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-12-18 14:06:08 | 只看该作者
一时半会儿还没理解这个fireevent到底是个什么意思,保存下来好好的理解一下
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-12-18 16:10:04 | 只看该作者
边实践边思考边总结,楼主做的不错!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-12-18 17:18:42 | 只看该作者
这么好的贴子怎么没人顶啊
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-12-18 18:17:40 | 只看该作者
确实不错,感谢楼主的贡献!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2012-1-25 13:44:08 | 只看该作者
这个功能主要是用于Web方面的测试,提供另外一种workaround。

本次在澳洲电信项目,就用了一把,好使。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-18 02:45 , Processed in 0.075541 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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