51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6021|回复: 21
打印 上一主题 下一主题

[原创] 求教:Browser("hwnd:=" & hwnd).Navigate

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-8-14 11:06:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我在【51Testing丛书连载:(五十一)精通QTP——自动化测试技术领航】中“获取当前窗口的句柄”的实例运行中报以下错误:
******************************************************************************
无法标识对象 "[ Browser ]" (属于类 Browser)。验证此对象的属性与当前显示在应用程序中的对象是否匹配。

第 (11) 行: "Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com""。

提示: 如果应用程序中的对象已更改,维护运行模式可以
帮助您识别和更新库中的步骤和/或对象。
******************************************************************************

请问这个问题怎么解决呢?

源代码如下:


'#######启动浏览器########
systemutil.Run "iexplore.exe"
'#######创建API  Extern对象##########
Extern.Declare micHWnd,  _
"GetForegroundWindow", "user32.dll", "GetForegroundWindow"
'######使用WIN32 API获取窗口的句柄######
hwnd = Extern.GetForegroundWindow()

'########通过获取的句柄控制浏览器窗口并跳转百度#####
Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"   '这句报错!!!!!!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

22#
发表于 2012-12-20 13:59:51 | 只看该作者
本帖最后由 jqd111 于 2012-12-20 14:01 编辑

回复5#:
1、通过SPY探测器可以看到对于IE窗口
   hwnd=Extern.GetForegroundWindow()  '取到的是Native Properties中hwnd的值
   a=Browser("micClass:=Browser").GetROProperty ("hwnd") '取到的是Identification  Properties中hwnd的值。

在执行脚本时,QTP识别对象时使用的是Identification  Properties中hwnd的值,所以执行Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com" 时会报对象无法识别,而执行Browser("hwnd:=" & a).Navigate "http://www.baidu.com"时就能够顺利通过。

2、按<F1>查看QTP的帮助,发现关于Extern的示例,使用的测试对象是记事本(notepad.exe)。通过SPY探测器可以看到对于“无标题- 记事本”窗口没有Native Properties,只有Identification  Properties,所以取到的就是Identification  Properties中的hwnd的值,因此在执行脚本时就不会遇到对象无法识别的情况了。
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2012-8-20 14:20:47 | 只看该作者
顶一下 去试一试
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2012-8-16 09:51:14 | 只看该作者
嗯,我是win7+ie8+qtp11,也是执行有问题
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    19#
    发表于 2012-8-16 09:39:09 | 只看该作者
    回复 18# jacksboy


    哎。。。。还是去问书的作者吧。。。。。QTP 论坛的一位斑竹就是你们用的书的作者

    Systemutil.Run "iexplore.exe"
    Browser("micClass:=Browser").OpenNewTab
    HWND = Browser("name:=New Tab").GetROProperty("hwnd")
    Browser("micClass:=Browser","hwnd:=" &HWND ).Navigate "http://www.baidu.com"
    这个执行的是没问题的吧?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2012-8-15 12:50:21 | 只看该作者
    我也是ie,使用一切正常,肯定是好的,首页为空,也执行不了这段话,录其它web都是好的,所以不可能是bhomanager有问题。这个怎么看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    17#
    发表于 2012-8-15 11:16:56 | 只看该作者
    回复 15# joykao

    不是吧,我也是IE8 啊。英文版的,那段脚本真心没问题哇我跑了N遍了。。
    你的IE 默认打开的是什么页面是不是有问题啊?

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2012-8-15 11:14:31 | 只看该作者
    回复 15# joykao


        ok咯。万分感谢!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    15#
    发表于 2012-8-15 10:10:05 | 只看该作者
    回复 14# 紫藤萝mary
    是你IE设置有问题,你可以重装下你的IE, 装完记得把BHO manager class 启动下 再执行脚本
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2012-8-15 09:39:59 | 只看该作者
    回复 13# joykao


        常规运行错误。

    "Browser("micClass:=Browser").OpenNewTab"。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    13#
    发表于 2012-8-14 20:25:59 | 只看该作者
    肯定错啊。。。必须的。。。
    '你打开的一个的页面应该是你设置的主页,或者空页面
    我试了下没问题
    Systemutil.Run "iexplore.exe"
    Browser("micClass:=Browser").OpenNewTab
    HWND = Browser("name:=New Tab").GetROProperty("hwnd")
    Browser("micClass:=Browser","hwnd:=" &HWND ).Navigate "http://www.baidu.com"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2012-8-14 18:26:48 | 只看该作者
    回复 10# joykao


    还是报错:
    无法标识对象 "[ Browser ]" (属于类 Browser)。验证此对象的属性与当前显示在应用程序中的对象是否匹配。
    第 (9) 行: "hwnd = Browser("name:=Browser").GetROProperty("hwnd")"。

    我的代码:
    '#######启动浏览器########
    systemutil.Run "iexplore.exe"
    '#######创建API  Extern对象##########
    'Extern.Declare micHWnd,  "GetForegroundWindow", "user32.dll", "GetForegroundWindow"
    '########通过获取的句柄控制浏览器窗口并跳转百度#####
    'hwnd = Extern.GetForegroundWindow()
    hwnd = Browser("name:=Browser").GetROProperty("hwnd")
    Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2012-8-14 18:24:05 | 只看该作者
    回复 10# joykao


        还是报错:
    无法标识对象 "[ Browser ]" (属于类 Browser)。验证此对象的属性与当前显示在应用程序中的对象是否匹配。

    第 (9) 行: "hwnd = Browser("name:=Browser").GetROProperty("hwnd")"。


    我的代码:
    '#######启动浏览器########
    systemutil.Run "iexplore.exe"
    '#######创建API  Extern对象##########
    'Extern.Declare micHWnd,  "GetForegroundWindow", "user32.dll", "GetForegroundWindow"
    '########通过获取的句柄控制浏览器窗口并跳转百度#####
    'hwnd = Extern.GetForegroundWindow()
    hwnd = Browser("name:=Browser").GetROProperty("hwnd")
    Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    10#
    发表于 2012-8-14 17:08:12 | 只看该作者
    回复 4# 紫藤萝mary
    你的句柄取错了吧。。能把你的代码贴一下吗?

    如果你想哪个页面跳转就取哪个页面的句柄,按你说的应该是这样写
    HWND = Browser("name:=New Tab").GetROProperty("hwnd")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2012-8-14 15:54:47 | 只看该作者
    回复 8# cellule


        嗯,正如你所说,dll打印的每次都不变,web的每次都在变。但是用web的hwnd程序不会报错,但是也打不开百度页面。这是什么原因呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2012-8-14 15:26:10 | 只看该作者
    回复 7# 紫藤萝mary

    你用我的打印看看 是不是每次,取Dll的hwnd 是唯一固定的,然后后面取web的是不固定的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2012-8-14 14:32:06 | 只看该作者
    回复 5# cellule


        是不一样,所以这个问题还是没解决到。你有解决办法么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2012-8-14 14:13:30 | 只看该作者
    学习下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2012-8-14 13:59:39 | 只看该作者
    '#######启动浏览器########
    systemutil.Run "iexplore.exe"
    '#######创建API  Extern对象##########
    Extern.Declare micHWnd,  _
    "GetForegroundWindow", "user32.dll", "GetForegroundWindow"
    '######使用WIN32 API获取窗口的句柄######
    hwnd = Extern.GetForegroundWindow()

    print hwnd

    '########通过获取的句柄控制浏览器窗口并跳转百度#####
    a=Browser("micClass:=Browser").GetROProperty ("hwnd")
    print a
    Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"

    你看下 2个打印信息 就知道2个hwnd 不一样
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2012-8-14 13:41:07 | 只看该作者
    回复 3# joykao


        我用你的方法试了,程序时能跑通,但是没有跳转到百度页面,浏览器还是停留在blank。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 20:07 , Processed in 0.087469 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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