致力于测试团队建设和自动化测试开发,欢迎有兴趣者一起研究讨论

使用FireEvent实现多样化对象操作

上一篇 / 下一篇  2008-05-21 00:33:03 / 个人分类:QTP

最近有人问我,有这样一个自动化的需求,该怎么实现:
2YevI,Rd%x0    把鼠标移到某个链接上,但不点击。该链接上利用css或js实现了某些效果或事件,但触发方式并不是点击,而是将鼠标移动过去(并非焦点移动过去)。

%P"D,mfj+g2j7p0    以中国雅虎首页的效果为例,以下代码实现了模拟鼠标从“站长天下”“今日焦点”“邮箱”“建站”“空间”“群组”“相册”顺次移动的过程:51Testing软件测试网;ZRS4^-]R/~9r8Ka7v

f4{1Y%G:[Iv0Option Explicit51Testing软件测试网1{X ~eF*S&X9P
'定义变量51Testing软件测试网HS.l'^8r ^
Dim oWin32    'win32对象51Testing软件测试网ya h6OU)e
Dim sTitle    '页面标题
wPP-`9v%Q'r0Dim arrLinkText    '链接文字数组
1U:v*er;E0Dim sLinkText    '链接文字
7^6j"a[;[U-}/}t xQM0
Dim sEventName    '操作事件名称51Testing软件测试网*Q@7ESH^iV
Dim iWaitTime    '两次操作时间间隔
[}"Tf YVs h6]7\|0Dim iIdentifyTimeOut    '识别对象超时时间
j&m}E7vP0Dim n    '循环变量51Testing软件测试网H#q]!P x

51Testing软件测试网 T{k XV(x;Rm-b/b

Main

9J(^[!E!O:WD051Testing软件测试网Z.h f7|E

Sub Main
O.^\@edM0 Set oWin32 = CreateObject("wscrīpt.shell")51Testing软件测试网4U;wo(N4a ^K:E
 sTitle = "中国雅虎.*"51Testing软件测试网 U N1L4h'WN"K6c#W
 arrLinkText = split("站长天下;今日焦点;邮箱;建站;彩票;空间;群组;相册",";",-1,1)    '定义链接文字数组51Testing软件测试网q q4BN0l W
 sEventName = "onmouseover"    '鼠标移到对象上的事件51Testing软件测试网w]3Dd2{
 iWaitTime = 1    '操作等待1秒51Testing软件测试网z5VtcM V3r*E%zr
 iIdentifyTimeOut = 3    '识别对象存在性超时时间设置为3秒

n8]x,UK*k!g0

*SAm*WrSU0 oWin32.Run("http://cn.yahoo.com/")    '打开浏览器,进入中国雅虎首页

&A Me0fU051Testing软件测试网(pX"EB&?c^2X5y1Q

 For n=0 to ubound(arrLinkText)
l.p-D1D4X"kG0  Wait iWaitTime    '操作等待51Testing软件测试网 D@EMcpda
  sLinkText = arrLinkText(n)    '从链接文字数组中取出链接文字
~1d$x'?l/OLy@8I0  moveMouseOnIt    '调用操作时间函数
s@8Q3J*G A.E^w0
 Next

3\.Ql |M.L/M?0

6b@ W2n8c8{]ia9}N0 Browser("title:="&sTitle).Close    '执行完毕关闭浏览器51Testing软件测试网+z`(H A3_L
End Sub

#c7s }-DoG't@051Testing软件测试网4[XX F9L Y vSg


`Bn P n e\&^0Function moveMouseOnIt()51Testing软件测试网t9Q?8Ua7v3\ Ut k4B
 '检查链接是否存在,存在则触发事件
]-^ Tg4Wr0 If Browser("title:="&sTitle).page("title:="&sTitle).link("innertext:="&sLinkText,"index:=0").Exist(iIdentifyTimeOut) Then51Testing软件测试网%Z.[ x}*c1O
  Browser("title:="&sTitle).page("title:="&sTitle).link("innertext:="&sLinkText,"index:=0").FireEvent sEventName    
!c5F9T]hHn5i0  moveMouseOnIt = True51Testing软件测试网1?J*U"i/Dr6u9U mw
  Reporter.ReportEvent micPass,sEventName,"Trigger the event """&sEventName&""" successfully."
(v!|"{*V-~JhiU~0 Else
!gU R EG!s:w3s0  moveMouseOnIt = False51Testing软件测试网Wav?(E0l
  Reporter.ReportEvent micFail,sEventName,"Fail to trigger the event """&sEventName&""" because of the absence of the link."51Testing软件测试网h k Z T)Xj!e7G@
 End If
)S$DfK.HlC0End Function

)S^)O8g'p051Testing软件测试网#ex;y(mGt&Czw!a8O6z

    运行后会发现有一步执行抛出了Fail,检查是一个名为“彩票”的链接不存在导致;原来中国雅虎不提供彩票服务啊~^_^
:N)` l0x+U'F9q;V0    所实现代码中最关键部分是FireEvent方法,针对Link对象,该方法除了onmouseover时间, 还有onchange, onclick, ondblclick, onblur, onfocus, onmousedown, onmouseup, onmouseout, onsubmit, onreset, onpropertychange事件可以使用,涵盖了目前我们所能做的全部操作。
&^$S6\V6VU:o0QkW0    至于其它对象的FireEvent方法,请参照QTP帮助文档中的FireEvent Method定义。
s%[7Z]Zr+c+l#r$`0    灵活运行FireEvent方法,可以很容易操纵页面对象触发各种事件,对自动化功能实现的程度也很有帮助51Testing软件测试网g8a,CW+p


TAG: QTP

 

评分:0

我来说两句

日历

« 2024-04-19  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 91008
  • 日志数: 79
  • 图片数: 1
  • 建立时间: 2008-05-18
  • 更新时间: 2009-06-04

RSS订阅

Open Toolbar