51Testing软件测试论坛

标题: QTP调出Web Image对象的右键菜单的方法 [打印本页]

作者: yabest    时间: 2007-7-10 10:09
标题: QTP调出Web Image对象的右键菜单的方法
Web里很多对象都有Click方法(object.Click [x], [y], [BUTTON]),带上micRightBtn参数,都能实现右键点击调出右键菜单的操作。
可是不知为何,Image对象就是不能右键点击,不管是否带上micRightBtn参数,Click执行的都是左键点击操作,所以无法调出右键菜单。
应朋友要求,研究了一番,找出替代的解决方法,写了一个函数,可供大家参考



SelectImageMenu browser("test").Page("test").Image("image001"), "R"

'================================================================
' FUNCTION NAME:
'        SelectImageMenu
' FUNCTION DESCRIPTION:
'        Use this function to right-click on a image object and select the pop-up menu
' FUNCTION USAGE:
'        ret = SelectImageMenu(browser("test").Page("test").Image("image001"), "R")
' FUNCTION PARAMETER        
'        ImageObject : The web image object
'        MenuKey : The hot key of pop-up menu item you will select
' FUNCTION RETURN:
'        Return 0 when successfully, or return -1 when fail
'================================================================
Function SelectImageMenu(ImageObject, MenuKey)

        Dim wshShell
        Dim ieServerObject

        Dim x1, y1

        'Get the ie server object
        Set ieServerObject = Window("regexpwndclass:=IEFrame").WinObject("regexpwndclass:=Internet Explorer_Server")

        'get the image position
        x1 = CInt(ImageObject.GetROProperty("abs_x"))
        y1 = CInt(ImageObject.GetROProperty("abs_y"))

        'right-click on image through ie object
        ieServerObject.Click x1, y1, micRightBtn
        wait 1

        'Select the menu item by press hot key
        Set wshShell = CreateObject("WScript.Shell")
        wshShell.SendKeys MenuKey
        wait 1
   
        SelectImageMenu = 0
        
End Function


说明:

因为那右键弹出菜单QTP无法识别,所以QTP无法操作这菜单,只能用键盘按键来代替鼠标选择。

键盘按键可以是热键,如“复制(C)”这一菜单项,可以用按键C来选择,MenuKey就设为"C"。

键盘按键也可以是下箭头和回车键,如要选择第三个菜单项,可以按三下下箭头和回车键来选择,MenuKey就设为"{DOWN}{DOWN}{DOWN}{ENTER}"。这样没有热键的菜单也可以选择了,前提是菜单项目是固定的,不是可变的。

[ 本帖最后由 yabest 于 2007-8-17 18:08 编辑 ]
作者: zhyb_2008    时间: 2007-7-10 10:13
调试一下试试,我也在用QTP调用一个程序的右键.参考着试试,支持楼主!sdlkfj2
作者: 没有蛀牙    时间: 2007-7-10 10:46
过来帮顶一下
顺便问一下
ieServerObject是什么对象阿
作者: stone821021    时间: 2007-7-10 13:22
看贴要回贴,养成良好的习惯!
作者: zhuyuancan    时间: 2007-7-10 17:08
那就回一个!!谢谢楼主的无私精神
作者: ybbiagu    时间: 2007-7-10 19:11
试试效果,有一部分没看看懂, wshShell.SendKeys有什么作用LZ解释下
作者: tails82    时间: 2007-7-11 11:05
用了宿主语言,这个比较底层,也相当实用:)
作者: walker1020    时间: 2007-7-13 16:30
不错 值得学习
作者: xihong2004    时间: 2007-7-29 22:57
回贴
作者: yabest    时间: 2007-8-1 14:45
原帖由 middlemoom 于 2007-7-30 09:11 发表
试试效果,有一部分没看看懂, wshShell.SendKeys有什么作用LZ解释下


因为那右键弹出菜单QTP无法识别,所以QTP无法操作这菜单,只能用键盘按键来代替鼠标选择。
键盘按键可以是热键,如“复制(C)”这一菜单项,可以用按键C来选择,MenuKey就设为"C"。
键盘按键也可以是下箭头和回车键,如要选择第三个菜单项,可以按三下下箭头和回车键来选择,MenuKey就设为"{DOWN}{DOWN}{DOWN}{ENTER}"
作者: pingzhou_1130    时间: 2007-8-10 13:33
我也来试试
作者: jackymail    时间: 2007-9-4 12:25
原来是用window整个对象进行绝对坐标的点击,
没那么麻烦。
把不能rightclick的对象做成虚拟对象就完事了!
作者: yabest    时间: 2007-9-4 15:01
做成虚拟对象不是更麻烦,而且是死的,对象位置一旦发生变化,就出错了。
我这个可是动态检查图片位置的,还可以供多处地方反复使用。
作者: jackymail    时间: 2007-9-4 15:43
Window("regexpwndclass:=IEFrame").WinObject("regexpwndclass:=Internet Explorer_Server")

ya老师:这个对象怎么找到的描述属性,每个ie都能做成这样的描述吗?winobject是指什么部件?
作者: yabest    时间: 2007-9-4 16:24
我也记不清了,好像是低级录制或模拟录制,可以得到这样的脚本
IE都可以这样用的!

Internet Explorer_Server对象就是IE中间内容部分的对象了,是IE的核心部件,很多软件嵌入了浏览器功能,其实就是引用了这个对象。
作者: jiangdanyang    时间: 2007-9-6 09:36
SelectImageMenu = 0
什么意思?谢谢LZ!
作者: yabest    时间: 2007-9-6 11:49
Return 0 when successfully, or return -1 when fail
作者: 看雪时节    时间: 2007-9-21 17:57
没怎么看明白
作者: athenalich    时间: 2007-12-3 20:40
thanks~~
作者: ZH_0211    时间: 2007-12-20 13:46
3Q
作者: lilysun0411    时间: 2008-1-24 18:00
我也要测个程序的右键快捷键,套用一下,谢谢!
作者: annt7    时间: 2008-6-11 16:45
这么好的东西虽然还用不到,但是也要收藏起来,以后肯定有用。谢谢楼主啦!
作者: lqin1982121    时间: 2008-6-12 10:18
thanks very much
作者: master1172    时间: 2008-9-17 16:10
非常感谢楼主,受教了,一直在头疼如何实现这个右键功能呢。
作者: a13763312220    时间: 2009-10-30 15:08
asdfasdfasdfasd
作者: a13763312220    时间: 2009-10-30 15:08
asdfasdfasdf
作者: 617200    时间: 2009-11-3 11:15
标题: 学习
谢谢斑竹
作者: souchy    时间: 2009-12-1 13:56
学习了!
作者: rojer521    时间: 2010-5-21 22:52
好帖收藏
作者: 413307036    时间: 2011-2-24 16:16

作者: chenlimei0603    时间: 2011-8-19 14:55
click 后面接的x,y坐标可以不写么?右键到底是怎么用,还是没看懂,
作者: jlminghui    时间: 2011-12-7 10:33
感谢楼主。
作者: muyunsihe    时间: 2012-4-19 10:43
谢谢




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