malasyan 发表于 2012-9-3 09:44:50

<QTP自动化测试技术领航>一书中实例,Navigate无法跳转,QTP报错,请教大家!

按照<QTP自动化测试技术领航>一书中,常用网页十大控件的说明中,浏览器Browser&Page,有一个实例,代码如下:
SystemUtil.Run "www.51testing.com"
Browser("micClass:=Browser").Navigate("bbs.51testing.com")
Browser("micClass:=Browser").Page("micClass:=Page").Sync:Wait 1

checkURL=Trim (Browser("micClass:=Browser").Object.LocationURL)
If checkURL="http://bbs.51testing.com/" Then
        Reporter.ReportEvent micPass,"Step 1","Passed"
Else
        Reporter.ReportEvent micFail,"Step 1","Failed"
End If

Browser("micClass:=Browser").OpenNewTab:Wait 1
testHWND=Browser("name:=新建选项卡").GetROProperty("hwnd")
Browser("name:=新建选项卡").Navigate "bbs.51testing.com"

Browser("51Testing软件测试论坛-首页").Page("51Testing软件测试论坛-首页").Link("登录").Click
With Browser("51Testing软件测试论坛-首页").Page("51Testing软件测试论坛-用户登录")
                        .WebEdit("username").Set "malasyan"
                        .WebEdit("password").Set "831212"
                        .WebButton("登录").Click:Wait 3
End With

oExist=Browser("51Testing软件测试论坛-首页").Page("51Testing软件测试论坛-首页").Link("退出").Exist (3)
If oExist Then
        Reporter.ReportEvent micPass,"Step 3","Passed"
Else
        Reporter.ReportEvent micFail,"Step 3","Failed"
End If

Browser("hwnd:="&testHWND).Close
Browser("micClass:=Browser").Refresh:Wait 1
oExist=Browser("51Testing软件测试论坛-首页").Page("51Testing软件测试论坛-首页").Link("退出").Exist (3)
If oExist Then
        Reporter.ReportEvent micPass,"Step 4","Passed"
Else
        Reporter.ReportEvent micFail,"Step 4","Failed"
End If


运行后,首先QTP报错,如图:
http://ww2.sinaimg.cn/bmiddle/6deb77e1jw1dwj33eowfdj.jpg

回到IE浏览器发现页面并没有做任何跳转,也就是说代码第二行并没有实现.
http://ww1.sinaimg.cn/bmiddle/6deb77e1jw1dwj33k6rn1j.jpg

然后看测试结果分析:Navigate一步的结果是Done
http://ww3.sinaimg.cn/bmiddle/6deb77e1jw1dwj36rqsw4j.jpg

报错步骤截图:
http://ww4.sinaimg.cn/bmiddle/6deb77e1jw1dwj36w03tkj.jpg

请教大家这是怎么回事啊:dizzy::'(

menrong 发表于 2015-7-14 10:19:03

'经过一段时间的观察,终于发现这些机器上IE加载项(IE"工具"->"管理加载项")的不同:
'BHOManager Class插件的问题。文件名是BHOManager.dll,部分人的机器上该插件被禁用或删除掉了,猜测原因可能是使用了某些清理ie的工具导致。


SystemUtil.CloseProcessByName "iexplore.exe"
SystemUtil.Run"iexplore.exe","www.51testing.com"
Browser("micClass:=Browser").Navigate "bbs.51testing.com"
Browser("micClass:=Browser").Page("micClass:=Page").Sync:wait 1

checkURL=Trim(Browser("micClass:=Browser").Object.LocationURL)

If(checkURL="http://bbs.51testing.com")Then
Reporter.ReportEvent micPass,"step1","passed"
Else
Reporter.ReportEvent micFail,"step1","failed"
End If

yujie6832 发表于 2012-9-3 10:06:57

这是个很复杂的问题,首先,第一张截图中报了语法错误,在某种时刻,虽然他指在那一行,但其实它不一定就是那行有问题。然后,没有跳转的问题,可能是环境问题,已经很多人问过了,我当初是QTP10.0+IE7+XP,然后把IE选项设置为在新窗口中打开新弹出的网页。这个问题不是很大的问题,建议读者不用太纠结,有了思路,自己写一套,我这段代码可能的确会运行失败,失败的原因是因为,网页没法在新窗口中打开,所以后面的也就都失败了

malasyan 发表于 2012-9-3 10:13:31

:victory:谢谢作者~

hsjzfling 发表于 2012-9-3 10:27:41

这类案例一般建议加点东西,小细节稍微处理下
'开头加上杀ie进程,确保初始环境干净
SystemUtil.CloseProcessByName "iexplore.exe"
'这里加上指定浏览器,规避设置不同默认浏览器不同引起的报错
SystemUtil.Run "iexplore.exe","www.51testing.com"

malasyan 发表于 2012-9-3 11:11:56

回复 4# hsjzfling


    谢谢楼上~可是加上之后还是报错,跟以前的一样.
照着2楼作者的浏览器设置改了新窗口弹出,也没有解决问题.
:'( 那我先不纠结了~

hsjzfling 发表于 2012-9-3 12:33:43

我提的那个是一般性建议,并不是特意针对你这个情况的……

General Run Error,未知错误类型,可能的情况非常多,需要结合环境、设置、实际场景等各方面因素来考虑分析,一般没有特效药。
建议的做法:换一台干净的机器来执行脚本。系统配置方面可参考作者提供的配置,降低因为环境因素导致问题的可能。

hyl521 发表于 2012-9-5 09:24:06

请问大侠们,这个QTP如何参数化data table 里的数据呢?就是一个值既是从脚本中攻取的,还要用的脚本中去!!这个问题纠结了几天了,由于自己不懂的代码,好苦闷呀!!

malasyan 发表于 2012-9-5 16:45:49

回复 7# hyl521


    你参考一下书154页开始.
页: [1]
查看完整版本: <QTP自动化测试技术领航>一书中实例,Navigate无法跳转,QTP报错,请教大家!