51Testing软件测试论坛

标题: 用Dom获取到对象后,怎么实现鼠标悬浮? [打印本页]

作者: 不想继续点点点    时间: 2010-11-8 15:43
标题: 用Dom获取到对象后,怎么实现鼠标悬浮?
本帖最后由 不想继续点点点 于 2010-11-8 15:47 编辑

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

代码如下图
作者: 不想继续点点点    时间: 2010-11-8 15:53
本帖最后由 不想继续点点点 于 2010-11-8 15:54 编辑

[attach]66202[/attach]
作者: 不想继续点点点    时间: 2010-11-8 15:56
代码在图里,对象这样做是可以找到的,我验证了。就是悬浮怎么实现,还没搞好。
大家帮我看看吧,谢谢了
作者: TIB    时间: 2010-11-8 16:59
试一下
FireEvent "onmouseover"
作者: ziheng198688    时间: 2010-11-8 17:07
楼主可以试试楼上的方法,应该可以实现的。
作者: ziheng198688    时间: 2010-11-8 17:07
楼主可以试试楼上的方法,应该可以实现的。
作者: 不想继续点点点    时间: 2010-11-9 10:40
我把那句的代码改成   
allLis(j).fireEvent("onmouseover")

试过了,还是不可以
作者: vernzhang1980    时间: 2010-11-9 17:36
问题现象:

系统中有一些菜单是用浮动窗口做的,鼠标移动到某个菜单项上,然后下面会有浮动菜单弹出。本来可以用很简单的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
作者: skyzhu    时间: 2010-11-10 10:52
可以纯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




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