51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2787|回复: 8
打印 上一主题 下一主题

[原创] 用Dom获取到对象后,怎么实现鼠标悬浮?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-8 15:43:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 不想继续点点点 于 2010-11-8 15:47 编辑

有个问题想要请教大家,目前测试的这个系统是EXT实现。
   在编写一个测试脚本的时候,由于导航栏的对象是QTP识别不了,所以我采用dom,找到这个对象。但要实现的效果是鼠标悬浮在对象(这个对象就是dom找到的那个对象)上时,出现一个下拉菜单。
   现在的问题是,我找到这个对象后怎么实现鼠标悬浮呢?采用onmouseover方法,回放时QTP提示“对象不支持此属性或方法”。

代码如下图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

9#
发表于 2010-11-10 10:52:25 | 只看该作者
可以纯DOM操作
比如(随便找的页面,页面比较杂。。。所以bbb对象层级有点乱,只是给个例子)
http://topic.csdn.net/t/20051021/10/4341109.html

Set aaa = browser("title:=.*").page("url:=.*")
set bbb  = aaa.object.body.childNodes.item(7).childNodes.item(0).childNodes.item(0).childNodes.item(0).childNodes.item(0).childNodes.item(0).childNodes.item(0).childNodes.item(0).childNodes.item(0)
bbb.onmouseover
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-11-9 17:36:58 | 只看该作者
问题现象:

系统中有一些菜单是用浮动窗口做的,鼠标移动到某个菜单项上,然后下面会有浮动菜单弹出。本来可以用很简单的Fireevent "Onmouseover" 来解决。不过我遇到的菜单这样处理了没有反应,而另一个同事遇到同样的问题就可以很容易解决。

解决办法:

后来据我分析,同事那边估计那个菜单项是Link的,而我遇到的菜单项是WebElement的,据HP专家讲,QTP的这个FireEvent对WebElement支持的不好。于是专家提供了一个引用外部API的方法给我来解决问题。下面拿来分享一下,也许哪天你就会碰到这样的问题,不妨试试。

Extern.Declare micLong, "SetCursorPos", "user32.dll", "SetCursorPos", micLong, micLong
Extern.SetCursorPos X,Y   '鼠标移动到坐标(X,Y)

Extern.Declare micVoid, "mouse_event", "user32.dll", "mouse_event", micLong, micLong, micLong, micLong, micLong
Extern.mouse_event 2,X,Y,0,0    '鼠标按下
Extern.mouse_event 4,X,Y,0,0    '鼠标抬起

这里有2个方法,分别是SetCursorPos和mouse_event。首先取得WebElement的绝对坐标,然后分别加一点(因为坐标是控件左上角,避免点不到,把坐标的横纵坐标都加5-10左右),然后使用SetCursorPos方法,鼠标就会正常移动到那个控件上,菜单也就正常弹出来了。mouse_event可能用到的比较少,其实就是Click点击事件,如果用这种方法写就很麻烦,必须把鼠标按下和鼠标抬起都用上才能作为点击的事件。后来在我做的脚本里,经常会用到鼠标移动的方法,点击的方法目前没用到,因为基本上Click都很正常,也许哪天出问题了就可以用这种了。

扩展一下,其实QTP里可以用这个Extern.Declare引用很多外部的API,只要你知道怎么用,像上面两个方法,我也是通过帮助看懂了一点点,具体这个Extern.Declare怎么用还是去看帮助吧。




本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tulituqi/archive/2008/12/02/3431054.aspx
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-11-9 10:40:55 | 只看该作者
我把那句的代码改成   
allLis(j).fireEvent("onmouseover")

试过了,还是不可以
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-11-8 17:07:43 | 只看该作者
楼主可以试试楼上的方法,应该可以实现的。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-11-8 17:07:35 | 只看该作者
楼主可以试试楼上的方法,应该可以实现的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-11-8 16:59:10 | 只看该作者
试一下
FireEvent "onmouseover"
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-11-8 15:56:56 | 只看该作者
代码在图里,对象这样做是可以找到的,我验证了。就是悬浮怎么实现,还没搞好。
大家帮我看看吧,谢谢了
回复 支持 反对

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-11-8 15:53:07 | 只看该作者
本帖最后由 不想继续点点点 于 2010-11-8 15:54 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-10-6 06:47 , Processed in 0.104256 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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