51Testing软件测试论坛

标题: link("浏览")的具体地址到底在哪儿 [打印本页]

作者: andrewXX    时间: 2009-6-9 17:40
标题: link("浏览")的具体地址到底在哪儿
请教各位大虾,我刚使用QTP哈,最近录制一个脚本,步骤是: 创建一个新的调查->跳转到所有调查项(包含新调查)的页面->点击新建调查的“浏览”项->查看新调查并投票

在回放的时候提示找不到相应调查项,原因是录制脚本创建的提交调查项和新建的调查项取名不一样。
我想看能不能参数化,但打开专家视图查看代码却发觉无从下手, 比如如下代码:

Browser("【xx.CMS Survey").Page("Survey List").Link("预览").Click
Browser("投票").Page("投票").WebRadioGroup("radio_19").Select "19_23"

link(“预览”)打开的具体URL地址没有给出啊?我应该怎么办才能得到它打开的具体地址,并着手参数化它呢,谢谢大家了

[ 本帖最后由 andrewXX 于 2009-6-10 10:06 编辑 ]
作者: kuangquanshui    时间: 2009-6-9 18:15
不太会  期待高手 帮你顶了
作者: dreamever    时间: 2009-6-10 09:06
从测试对象地图里,你双击那个对象节点,能看到所有的属性,至于说能不能看到具体的url,那需要看程序上是怎么处理的了,有的页面将链接显式的写在页面中,这样LINK就可以用QTP直接获取到,但是有的页面是将链接写在一个js函数中,这样的话就只能通过其他的属性如text等来进行识别和参数化了。
作者: kuangquanshui    时间: 2009-6-10 09:26
学习了  研究研究
作者: andrewXX    时间: 2009-6-10 10:01
标题: 回复 2# 的帖子
初次使用,初次发帖,多多包涵~
作者: andrewXX    时间: 2009-6-10 10:03
谢谢指引方向哈,今天动手实验
作者: andrewXX    时间: 2009-6-10 16:10
标题: sourceIndex 错在哪,老提示这个错误
今天在网上找了些帖子,发现一些方法,试着做了一下,如下,请大虾们帮排查一下哪里错了啊
Set objlinks=Browser("【XXX CMS Survey").Page("Survey List").object.links
For each select_link in objlinks
        If select_link.sourceIndex<mix_sourceIndexID Then
         got_mixIndex=select_link.sourceIndex
         mix_sourceIndexID=select_link.sourceIndex
        End If

Next

Browser("【XXX CMS Survey").Page("Survey List").Link("sourceIndex"=got_mixIndex).Click

[ 本帖最后由 andrewXX 于 2009-6-10 16:51 编辑 ]
作者: dreamever    时间: 2009-6-10 16:37
疯了,楼主是你在考验大家的智慧啊?如果提示错误的话,您是不是能把错误信息贴出来,并且告诉我们是第几行出了错误?我代表大家谢谢你
作者: andrewXX    时间: 2009-6-10 16:47
呵呵,不用谢,我现在都贴出来哈
上面有小小错误:Link("sourceIndex"=got_mixIndex)提示,got_mixIndex未知 错误,后来发现该写成Link("sourceIndex="&got_mixIndex).

改正之后出现的错误为:
The "sourceIndex=95" link object was not found in the object Repository. Check the Object Repository to confirm that the object exists or to find the correct name for the object
作者: andrewXX    时间: 2009-6-10 17:28
不知道是不是 test project propersity里面没有这个这个SourceIndex项目造成的,目前用spy看了一下run project propersity有sourceIndex这个值,而test project propersity里却没有
作者: dreamever    时间: 2009-6-11 09:28
原帖由 andrewXX 于 2009-6-10 17:28 发表
不知道是不是 test project propersity里面没有这个这个SourceIndex项目造成的,目前用spy看了一下run project propersity有sourceIndex这个值,而test project propersity里却没有

QTP有两种属性的,一个运行时属性,一个测试对象属性,分别简称ro和to,你说的那个sourceIndex是哪个属性的?
作者: andrewXX    时间: 2009-6-11 09:49
原帖由 dreamever 于 2009-6-11 09:28 发表

QTP有两种属性的,一个运行时属性,一个测试对象属性,分别简称ro和to,你说的那个sourceIndex是哪个属性的?

呵呵,是ro吧,我搞错了该run object,我写成了 run project.sourceIndex是在 ro里的属性,to里没有。
我后来试着用网上说的settoproperty函数去把sourceIndex 属性加在TO里面。报expected identifiler的错误。

我现在就想抓做sourceIndex这个值去自动化参数LINK,因为看起来每新建一个调查,sourceIndex值就变小一个,请教大侠们给出一个再具体点的思路好吗?
作者: andrewXX    时间: 2009-6-11 10:18
老是报这个错误
The test run cannot continue due to a syntax error.
Expected identifier

出错的代码行为:Browser("【xxx CMS Survey").Page("Survey List"). ").SetTOProperty("sourceIndex", "setIndex")".

我的setIndex设成的99
作者: andrewXX    时间: 2009-6-16 10:16
标题: 终于完成了
前几天的帖子,QTP的许多基础知识都不懂,现在搞明白了,贴出来希望可以供非常新的新人参考参考。

弄清楚如下基础概念和方法才能少走弯路:
运行时对象:Run object
测试对象:Test object
对象仓库:object Repository
对象探测器:Object Spy
重要函数
Getroproperty:取得运行时对象的各种属性
Settoproperty:设置测试对象的各种属性
Getroproperty函数的使用格式为:某对象.Getroproperty(“属性名称”)
SettoPRoperty函数的使用格式为:某对象.Settoproperty "属性" 变量//注意变量不需要引号,引号也是区分半角字符和全角字符滴。link中使用某属性时,记住在等号前面要加一冒号,像这样link(“href:=XXX”)
-------------------------具体执行------------------------------------------------------------
1.回放时的问题。
此次参数化的LINK是这样的,创建一个调查,在列表中点击浏览,浏览该新建调查,当录制到浏览那一步时,QTP记录的时第一次录制脚本的LINK。QTP把该LINK的各个属性都放在Test Object中,以后再运行该脚本就根据Test Object的属性值创建一临时对象。故每次跑该脚本,创建完新的调查,点浏览时,还是浏览的最开始录制脚本时的调查。因为LINK中的属性<Href >没变。

所以选择使用href的值来参数化该link,观察href属性:(“href:=http://xxx/subject_id=55[/color只要能够做到将红色字体及调查ID参数话,就能打开不同的链接。为此,我们要得到最新创建的调查的ID。

2.使用object Repository 和 object Spy 加观察web页面,获取我们所有需要的对象及信息。
可以观察那个对象中带有这个调查ID,通过观察页面发现,在新建调查的web页面下方有一张表A给出了新建调查的的信息。
我们能使用的对象的数据都是保存在对象库(object repository)中的,如果对象库中没有该表,则无法使用该表中的信息,由于录制脚本时没有对该表的操作,对象库(object Repository)中无此对象,所以我们要将该表A加入到对象库(object repository)。
然后就是在脚本运行时获得该表的最新价值,这里就要用到GetroProperty函数了,具体抓取什么属性要根据Object Spy 该对象的属性特定来得出。

3.既然一切都有了,接下来就是编码了呗,将得到的最新ID,构造一个最新的链接href,然后用SetTOPropery函数将它设置给脚本运行时参照的临时对象。它就能正确打开最新的调查页面了,代码如下
h="http://157.60.54.136:8013/msurvey/SurveyPreview.aspx?subject_id="&Id //此处的Id及为最新的调查ID
Browser("【XXX CMS Survey").Page("Survey List").Link("预览").SetTOProperty "href",h
Browser("【XXX CMS Survey").Page("Survey List").Link("预览").Click

OK,打完收工

作者: hihotb    时间: 2009-6-16 15:09
晕死,到后面才看出的你的问题是什么。
这种研究和分享精神值得的大家学习。UPUPUP




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2