菜鸟: 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行,鼠标悬停到"设置"上的下拉菜单不出现(就是一个箭头+转动的小圈显示在页面上),提示为找不到"搜索设置"对象,没发执行下面的步骤
哪位大侠能指导一下!谢谢
你的搜索设置应该在设置链接下吧。。。。:L 应该是这样吧
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
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。
joykao 发表于 2015-11-24 10:34
你的搜索设置应该在设置链接下吧。。。。 应该是这样吧
Browser("百度一下,你就知道").Page("百度一 ...
您好,感谢回复,这个我也不知道怎么回事,我用spy抓取的时候,在"设置"那个位置就是抓出来的"更多产品"的链接,我用的IE11 本帖最后由 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 检查下你的IE是不是缩放了,打开IE按下Ctrl+0,是零不是哦,如果没缩放,请打开对象库,然后检查对象库中是否有设置这个链接,如果没有手工添加下:lol然后应该就没问题了 joykao 发表于 2015-11-24 11:03
检查下你的IE是不是缩放了,打开IE按下Ctrl+0,是零不是哦,如果没缩放,请打开对象库,然后检查对象库中是 ...
啊,就是这个原因,现在问题已经得到解决,谢谢大侠:):):handshake sisi20151123 发表于 2015-11-24 12:39
啊,就是这个原因,现在问题已经得到解决,谢谢大侠
:loveliness: joykao 发表于 2015-11-24 13:29
Hello啊,我刚又试了几次,有一次成功了,貌似问题还是出现在
Browser("百度一下,你就知道").Page("百度一下,你就知道").Link("设置").FireEvent "onmouseover"这一步,是不是onmouseover在IE上的支持不好啊,只能有很少的机会能成功,我说的成功就是鼠标悬停能显示悬停菜单,好奇怪啊 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
贴出来供大家学习讨论,不足之处还望大侠们不吝指教!
谢谢已经回复此贴的三位大侠,给了我很多提示和信息:handshake:handshake
页:
[1]