51Testing软件测试论坛

标题: 菜鸟: qtp 使用onmouseover事件后,不能成功回放 [打印本页]

作者: sisi20151123    时间: 2015-11-23 19:57
标题: 菜鸟: qtp 使用onmouseover事件后,不能成功回放
本帖最后由 sisi20151123 于 2015-11-23 20:03 编辑

用qtp11.5录制脚本,场景为:
1.打开百度主页
2.鼠标悬停到"设置"
3.点击下拉菜单项:搜索设置
4.点击"保存设置"
5.点击"OK"
录制的脚本为:
Setting.WebPackage("ReplayType") = 2
wait 5
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("更多产品").FireEvent "onmouseover"
wait 1
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("搜索设置").Click
Wait 2
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("保存设置").Click
Browser("百度一下,你就知道").Dialog("Message from webpage").WinButton("OK").Click

回放现象:
脚本运行到3行,鼠标悬停到"设置"上的下拉菜单不出现(就是一个箭头+转动的小圈显示在页面上),提示为找不到"搜索设置"对象,没发执行下面的步骤
哪位大侠能指导一下!谢谢


作者: joykao    时间: 2015-11-24 10:34
你的搜索设置应该在设置链接下吧。。。。 应该是这样吧

Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover"
wait 1
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("搜索设置").Click
Wait 2
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("保存设置").Click
Browser("百度一下,你就知道").Dialog("Message from webpage").WinButton("OK").Click

作者: shanfeng1419    时间: 2015-11-24 10:43
systemutil.Run  "iexplore.exe","http://www.baidu.com"
browser("百度一下,你就知道").Sync
browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover"
browser("百度一下,你就知道").Page("百度一下,你就知道").Link("outertext:=搜索设置","index:=1").Click 'index=0 也可

对象库里就有个brwoser,page和设置的link。




作者: sisi20151123    时间: 2015-11-24 10:49
joykao 发表于 2015-11-24 10:34
你的搜索设置应该在设置链接下吧。。。。 应该是这样吧

Browser("百度一下,你就知道").Page("百度一 ...

您好,感谢回复,这个我也不知道怎么回事,我用spy抓取的时候,在"设置"那个位置就是抓出来的"更多产品"的链接,我用的IE11
作者: sisi20151123    时间: 2015-11-24 10:55
本帖最后由 sisi20151123 于 2015-11-24 10:57 编辑
shanfeng1419 发表于 2015-11-24 10:43
systemutil.Run  "iexplore.exe","http://www.baidu.com"
browser("百度一下,你就知道").Sync
browser(" ...

您好,感谢回复。
现在有一个问题,在执行这一步的时候:browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover" ,我用spy抓“设置”对象的时候,实际是抓的是"更多产品"对象,所以您看我的脚本,实际情况是在这一步好像都没生效,鼠标悬停在"设置"对象的时候悬停菜单没有出现,导致QTP找不到悬停菜单的子菜单"搜索设置",没办法执行下一步,我用的是IE11
作者: joykao    时间: 2015-11-24 11:03
检查下你的IE是不是缩放了,打开IE按下Ctrl+0,是零不是哦,如果没缩放,请打开对象库,然后检查对象库中是否有设置这个链接,如果没有手工添加下然后应该就没问题了
作者: sisi20151123    时间: 2015-11-24 12:39
joykao 发表于 2015-11-24 11:03
检查下你的IE是不是缩放了,打开IE按下Ctrl+0,是零不是哦,如果没缩放,请打开对象库,然后检查对象库中是 ...

啊,就是这个原因,现在问题已经得到解决,谢谢大侠
作者: joykao    时间: 2015-11-24 13:29
sisi20151123 发表于 2015-11-24 12:39
啊,就是这个原因,现在问题已经得到解决,谢谢大侠


作者: sisi20151123    时间: 2015-11-24 14:04
joykao 发表于 2015-11-24 13:29

Hello啊,我刚又试了几次,有一次成功了,貌似问题还是出现在
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover"这一步,是不是onmouseover在IE上的支持不好啊,只能有很少的机会能成功,我说的成功就是鼠标悬停能显示悬停菜单,好奇怪啊
作者: sisi20151123    时间: 2015-11-24 18:19
Hello啊,捯饬了一个下午,发现onmouseover这个事件不是每次都能生效,所以我加了个流程控制,大概的思路是:现在"设置"上onmouseover,如果不能触发悬停菜单,就将鼠标移动到"视频"上,然后再鼠标悬停"设置"上,如此循环,直到"设置"上的悬停菜单出现,执行点击"搜索设置"的操作,代码如下:
Browser("百度一下,你就知道").Page("百度一下,你就知道").Sync
Setting.WebPackage("ReplayType") = 2
Dim Bc
Bc=False
public function Bclick()
do while Bc=False

Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover"
Bc=browser("百度一下,你就知道").Page("百度一下,你就知道").Link("outertext:=搜索设置","index:=1").Exist

If(Bc=true) Then
ExitActionIteration("OK")
Else
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("视频").FireEvent "onmouseover"

End if

LOOP

End function

Call Bclick()

Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("搜索设置").Click
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("保存设置").Click
Browser("百度一下,你就知道").Dialog("Message from webpage").WinButton("OK").Click

贴出来供大家学习讨论,不足之处还望大侠们不吝指教!
谢谢已经回复此贴的三位大侠,给了我很多提示和信息




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2