51Testing软件测试论坛
标题:
求教:Browser("hwnd:=" & hwnd).Navigate
[打印本页]
作者:
紫藤萝mary
时间:
2012-8-14 11:06
标题:
求教:Browser("hwnd:=" & hwnd).Navigate
我在【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" '这句报错!!!!!!!!
作者:
shingo0109
时间:
2012-8-14 11:26
我也试了下貌似是不行, LZ最好去问作者吧, 论坛上有一个专门解答该书问题的帖子:
"2012年给力新作《精通QTP——自动化测试技术领航》试读以及答疑专用贴 "
链接为:
http://bbs.51testing.com/viewthr ... p;extra=&page=1
作者:
joykao
时间:
2012-8-14 12:50
'#######启动浏览器########
systemutil.Run "iexplore.exe"
'######取到当前页面的句柄######
HWND = Browser("XXXXX").GetROProperty("hwnd")
'########通过获取的句柄控制浏览器窗口并跳转百度#####
Browser("hwnd:=" & HWND ).Navigate "http://www.baidu.com"
作者:
紫藤萝mary
时间:
2012-8-14 13:41
回复
3#
joykao
我用你的方法试了,程序时能跑通,但是没有跳转到百度页面,浏览器还是停留在blank。
作者:
cellule
时间:
2012-8-14 13:59
'#######启动浏览器########
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 不一样
作者:
louqqson008
时间:
2012-8-14 14:13
学习下
作者:
紫藤萝mary
时间:
2012-8-14 14:32
回复
5#
cellule
是不一样,所以这个问题还是没解决到。你有解决办法么?
作者:
cellule
时间:
2012-8-14 15:26
回复
7#
紫藤萝mary
你用我的打印看看 是不是每次,取Dll的hwnd 是唯一固定的,然后后面取web的是不固定的
作者:
紫藤萝mary
时间:
2012-8-14 15:54
回复
8#
cellule
嗯,正如你所说,dll打印的每次都不变,web的每次都在变。但是用web的hwnd程序不会报错,但是也打不开百度页面。这是什么原因呢?
作者:
joykao
时间:
2012-8-14 17:08
回复
4#
紫藤萝mary
你的句柄取错了吧。。能把你的代码贴一下吗?
如果你想哪个页面跳转就取哪个页面的句柄,按你说的应该是这样写
HWND = Browser("name:=New Tab").GetROProperty("hwnd")
作者:
紫藤萝mary
时间:
2012-8-14 18:24
回复
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"
作者:
紫藤萝mary
时间:
2012-8-14 18:26
回复
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"
作者:
joykao
时间:
2012-8-14 20:25
肯定错啊。。。必须的。。。
'你打开的一个的页面应该是你设置的主页,或者空页面
我试了下没问题
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"
作者:
紫藤萝mary
时间:
2012-8-15 09:39
回复
13#
joykao
常规运行错误。
"Browser("micClass:=Browser").OpenNewTab"。
作者:
joykao
时间:
2012-8-15 10:10
回复
14#
紫藤萝mary
是你IE设置有问题,你可以重装下你的IE, 装完记得把BHO manager class 启动下 再执行脚本
作者:
紫藤萝mary
时间:
2012-8-15 11:14
回复
15#
joykao
ok咯。万分感谢!!!
作者:
joykao
时间:
2012-8-15 11:16
回复
15#
joykao
不是吧,我也是IE8 啊。英文版的,那段脚本真心没问题哇
我跑了N遍了。。
你的IE 默认打开的是什么页面是不是有问题啊?[attach]80600[/attach]
作者:
jacksboy
时间:
2012-8-15 12:50
我也是ie,使用一切正常,肯定是好的,首页为空,也执行不了这段话,录其它web都是好的,所以不可能是bhomanager有问题。这个怎么看
作者:
joykao
时间:
2012-8-16 09:39
回复
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"
这个执行的是没问题的吧?
作者:
robinpipi
时间:
2012-8-16 09:51
嗯,我是win7+ie8+qtp11,也是执行有问题
作者:
AntonioNikki
时间:
2012-8-20 14:20
顶一下 去试一试
作者:
jqd111
时间:
2012-12-20 13:59
本帖最后由 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的值,因此在执行脚本时就不会遇到对象无法识别的情况了。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2