51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 13023|回复: 34
打印 上一主题 下一主题

QTP调出Web Image对象的右键菜单的方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-7-10 10:09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-7-10 10:13:35 | 只看该作者
调试一下试试,我也在用QTP调用一个程序的右键.参考着试试,支持楼主!sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-7-10 10:46:47 | 只看该作者
过来帮顶一下
顺便问一下
ieServerObject是什么对象阿
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-7-10 13:22:01 | 只看该作者
看贴要回贴,养成良好的习惯!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-7-10 17:08:56 | 只看该作者
那就回一个!!谢谢楼主的无私精神
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-7-10 19:11:36 | 只看该作者
试试效果,有一部分没看看懂, wshShell.SendKeys有什么作用LZ解释下
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-7-11 11:05:28 | 只看该作者
用了宿主语言,这个比较底层,也相当实用:)
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-7-13 16:30:29 | 只看该作者
    不错 值得学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-7-29 22:57:18 | 只看该作者
    回贴
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2007-8-1 14:45:54 | 只看该作者
    原帖由 middlemoom 于 2007-7-30 09:11 发表
    试试效果,有一部分没看看懂, wshShell.SendKeys有什么作用LZ解释下


    因为那右键弹出菜单QTP无法识别,所以QTP无法操作这菜单,只能用键盘按键来代替鼠标选择。
    键盘按键可以是热键,如“复制(C)”这一菜单项,可以用按键C来选择,MenuKey就设为"C"。
    键盘按键也可以是下箭头和回车键,如要选择第三个菜单项,可以按三下下箭头和回车键来选择,MenuKey就设为"{DOWN}{DOWN}{DOWN}{ENTER}"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-8-10 13:33:58 | 只看该作者
    我也来试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-9-4 12:25:38 | 只看该作者
    原来是用window整个对象进行绝对坐标的点击,
    没那么麻烦。
    把不能rightclick的对象做成虚拟对象就完事了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2007-9-4 15:01:04 | 只看该作者
    做成虚拟对象不是更麻烦,而且是死的,对象位置一旦发生变化,就出错了。
    我这个可是动态检查图片位置的,还可以供多处地方反复使用。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-9-4 15:43:01 | 只看该作者
    Window("regexpwndclass:=IEFrame").WinObject("regexpwndclass:=Internet Explorer_Server")

    ya老师:这个对象怎么找到的描述属性,每个ie都能做成这样的描述吗?winobject是指什么部件?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2007-9-4 16:24:10 | 只看该作者
    我也记不清了,好像是低级录制或模拟录制,可以得到这样的脚本
    IE都可以这样用的!

    Internet Explorer_Server对象就是IE中间内容部分的对象了,是IE的核心部件,很多软件嵌入了浏览器功能,其实就是引用了这个对象。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-9-6 09:36:07 | 只看该作者
    SelectImageMenu = 0
    什么意思?谢谢LZ!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2007-9-6 11:49:30 | 只看该作者
    Return 0 when successfully, or return -1 when fail
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2007-9-21 17:57:30 | 只看该作者
    没怎么看明白
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2007-12-3 20:40:39 | 只看该作者
    thanks~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2007-12-20 13:46:25 | 只看该作者
    3Q
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 16:44 , Processed in 0.083314 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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