jraphicqesign 发表于 2010-6-4 11:26:00

QTP 无法识别 Data Table里面带?问号的网址URL

测试网页log in之后的redirect功能,即
在页面A,用户选择登陆,登陆之后,应该掉转回页面A。

我利用data table存储大约20个不同的页面A的URL
大多数页面的测试都能通过,但是如果页面的URL里面有问号则不能识别

下面是截取的部分代码

Dim PageURL
Dim SignInText
PageURL = DataTable("A", dtGlobalSheet)
SignInText = "Sign In"

'Wait till the home page is open, this may take a while
Browser("YouPlayoff - Create and").Page("YouPlayoff - Create and").Sync

'Navigate to the URLs listed in the Data Table
Browser("YouPlayoff - Create and").Navigate PageURL

'From the page opened above, click the "Sign In" link
Browser("YouPlayoff - Create and").Page("url:=" & PageURL).Link("text:=" & SignInText).Click

问题就出现在这一句,如果URL里面有问号,比如像http://bbs.51testing.com/frame.php?frameon=yes则QTP不能识别出这个PAGE,因为找不到这个PAGE,也就找不到SIGN IN这个link,从而不能对其进行点击。

如果数据表格里的URL没有问号,比如http://www.google.ca就可以识别 (我还发现url不能以 “/” 结尾,也就是说 http://www.google.ca/ 不能识别,但是 http://www.google.ca 就可以识别)。

请问有经验的大牛,我怎么解决url里面带问号的情况?谢谢!(另外,如果直接录制的话,就没有问题,在object repository里面url就是带问号的,但是可以识别,就是当带问号的url是从数据表格中读出来的就有问题了,但是因为我需要一下测试大约20个不同的网页跳转情况,所以必须用到数据表)

[ 本帖最后由 jraphicqesign 于 2010-6-4 11:28 编辑 ]

TIB 发表于 2010-6-4 11:55:57

问号用斜杠转义一下
http://bbs.51testing.com/frame.php\?frameon=yes

jraphicqesign 发表于 2010-6-5 13:04:18

谢谢你的回复,但是据我实验还是不行。

PageURL = DataTable("A", dtGlobalSheet)

Data Tabe里面数据是
http://testing.youplayoff.com/whatsup\?show=2
(这个国内打不开,但是不影响大家讨论问题)
原来的数据是http://testing.youplayoff.com/whatsup?show=2
我是按楼上的建议加了\

用下面这句
Browser("YouPlayoff - Create and").Navigate PageURL
打开的网页url是
http://testing.youplayoff.com/whatsup/?show=2

下面要进行的是在这一页找到一个名为Sign In的link
Browser("YouPlayoff - Create and").Page("url:=" & PageURL).Link("text:=" & SignInText).Click
依然无法识别Page。。。

肯定是URL里面那个问号的问题,因为不带问号的网页数据就能识别到。

[ 本帖最后由 jraphicqesign 于 2010-6-5 13:07 编辑 ]

今天有雾 发表于 2010-6-5 15:06:32

Browser("YouPlayoff - Create and").Navigate PageURL

到这一步骤的时候,网页能够打开么?如果能够打开,就不是url的问题,如果不行,你不用变量,直接写个地址,再打开看看呀

多输出一些变量结果,进行一下调试吧

TIB 发表于 2010-6-5 15:26:23

PageURL = "http://bbs.51testing.com/frame.php?frameon=yes"
Browser("version:=inter.*").Navigate PageURL

If Browser("version:=inter.*").Page("url:=http://bbs.51testing.com/frame.php\?frameon=yes").Exist Then
        Print "OK"
Else
        Print "NOT OK!"
End If

jraphicqesign 发表于 2010-6-7 01:40:16

回复 5# 的帖子

真的是十分感谢TIB同志,在你第二个回复的指导下,调试通过了。

你第一次指导没有通过的原因如下,

我直接把网址中的?换成\?填入到data table中
Navigate实际浏览器里显示的网址是/?
在这种情况下,要再想利用data table里面存储的\?网址找到sign in link就找不到
因为/?和\?不一样

但是你第二次指导之后我发现
首先需要使navigate显示的网址还是?(说明data table里面存储的网址也是?)
但是利用Browser("YouPlayoff - Create and").Page("url:=" & PageURL).Link("text:=" & SignInText).Click打开sign in link时候需要
把PageURL, 也就是data table里面存储的网址从?转化为\?

我对代码进行了如下修改就可以找到sign in link了
PageURL = DataTable("A", dtGlobalSheet)
'data table里面存的还是http://testing.youplayoff.com/whatsup?show=2

Browser("YouPlayoff - Create and").Navigate PageURL

'If InStr (PageURL, "?") <> 0 Then
        PageURL = Replace (PageURL, "?", "\?")
'End If
'msgBox (PageURL)

Browser("YouPlayoff - Create and").Page("url:=" & PageURL).Link("text:=" & SignInText).Click

再次感谢!

我有把所有测试中学到的问题解决方案总结在这里:
http://automation.youplayoff.com/
希望大家批评指正

[ 本帖最后由 jraphicqesign 于 2010-6-29 09:32 编辑 ]
页: [1]
查看完整版本: QTP 无法识别 Data Table里面带?问号的网址URL