51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 14641|回复: 42
打印 上一主题 下一主题

如何参数化link

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-10-27 13:13:59 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有个朋友问
如何参数化link
大致意思是说,页面上有很多link
录的时候点一个link,回放的时候能够点很多link
即所谓"link的参数化":)

以我们的bbs为例,给出以下代码
  1. Browser("Browser").Page("Page").Sync
  2. Browser("Browser").Navigate "http://bbs.51testing.com/index.php"
  3. Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Sync

  4. Set tags=Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Object.links
  5. Dim i,j, arr()
  6. i=0
  7. For Each element in tags
  8.     If Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
  9. ReDim Preserve arr(i+1)
  10.      arr(i)=element.InnerText
  11.     i=i+1
  12. end if
  13. Next



  14. For j=0 to i
  15. Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[ 版主讨论区 ]").SetTOProperty "Text",arr(j)
  16.             Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[ 版主讨论区 ]").Click
  17. Browser("Browser").Back
  18. Next
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

43#
发表于 2008-10-23 10:26:03 | 只看该作者

最近发现了一个LINK参数化的好方法

例:Browser("欢迎您登录Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("链接的内容").SetTOProperty "text",DataTable("参数化表名", dtGlobalSheet)   

这样就可以实现了,关键点是.SetTOProperty "text",DataTable("参数化表名", dtGlobalSheet) ,这样也不用手写循环了,直接在参数化列表中创建多个数据就行了

详细请参见:
http://www.testage.net/index.php ... space-itemid-159801
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    42#
    发表于 2008-2-28 23:03:37 | 只看该作者
    另外,关于参数化Link,可以参考 http://bbs.51testing.com/viewthread.php?tid=104648
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    41#
    发表于 2008-1-23 14:03:18 | 只看该作者
    刚才用到自己的测试脚本中试了下,还成。。谢谢。
    借楼主的贵地问各同仁一个问题:
    用QTP模拟局域网内二百个用户同时运行同一个控件,脚本如何写才好?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2008-1-22 11:28:53 | 只看该作者
    顶下,算是高水平的交流
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
    发表于 2007-12-29 18:08:18 | 只看该作者

    看了

    看了就要支持下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2007-12-29 10:23:42 | 只看该作者
    .........顶一个....

    [ 本帖最后由 kamina_ 于 2007-12-29 14:39 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2007-12-13 20:23:26 | 只看该作者

    回复 1# 的帖子

    支持,顶
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
     楼主| 发表于 2007-12-12 20:17:55 | 只看该作者
    原帖由 lily_mu75 于 2007-1-12 18:09 发表
    请问版主element.tagname和element.InnerText是属于哪一块的语言?在哪可以查到tagname和innertext属性的相关资料?我在QTP帮助文档里没有查到。


    查一下MS的手册吧。vbscript的。我想应该能查到吧。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
     楼主| 发表于 2007-12-12 20:15:56 | 只看该作者
    原帖由 terrylight 于 2007-1-26 10:08 发表
    For Each element in tags
        If Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
                            ReDim Preserve arr(i+1)
                        arr(i)=element.InnerText
        i ...


    这段代码的意思就是说,如果tagname是link的标记:<A>,而且link还是以"["开头。那么就认为这是板块名称的link。
    就把它存到数组里面。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
     楼主| 发表于 2007-12-12 20:05:53 | 只看该作者
    原帖由 Fantastic_test 于 2007-12-6 09:36 发表
    我遇到的问题跟你的一样。但我不明白你下楼说的意思。是不是这样理解:先转到“http://bbs.51testing.com/default.php”此页面 ,然后点击各个栏目。而后在将刚才专家视图中的代码换成楼主的代码。但是“Browser("Br ...


    别崩溃啊。我想可能是论坛升级后,程序无法运行了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33#
    发表于 2007-12-6 09:36:24 | 只看该作者

    回复 20# 的帖子

    我遇到的问题跟你的一样。但我不明白你下楼说的意思。是不是这样理解:先转到“http://bbs.51testing.com/default.php”此页面 ,然后点击各个栏目。而后在将刚才专家视图中的代码换成楼主的代码。但是“Browser("Browser").Navigate "http://bbs.51testing.com/index.php"
    ”这个地方的网址必须改为“http://bbs.51testing.com/default.php” 。。高手们帮我指点一下迷雾吧。我已经快崩溃了啊 。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2007-7-10 16:15:44 | 只看该作者

    回复 #2 lovetest6 的帖子

    For Each element in tags
        If Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
                            ReDim Preserve arr(i+1)
                        arr(i)=element.InnerText
        i=i+1
            end if
    Next
    上面代码中if后的第2个条件不具有普遍性,并不是每个链接的InnerText都是以[开头的,比如注册,登录,退出等,所以觉得应该去掉这个条件
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2007-5-29 17:33:31 | 只看该作者
    找了好久,终于找到我要查的问题的帖子了,太谢谢大家了

    还有两个问题,有谁可以详细的教一下:

    1.如何录制或写可以循环的脚步(比如我要测试很多次点击一个按钮“Cancel”,这个动作怎么录)
    2.我想根据条件来跑程序,应该怎么写脚本呢?
    比如在一定的条件下,会出现一种情况
    另外的情况下,又会出现另外的情况

    知道的同仁一定帮忙呀sdlkfj2
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    30#
    发表于 2007-5-25 17:25:05 | 只看该作者
    关于循环语句的使用:
    在这里还是提倡使用For each
    如果用Hunter 的方法,for i=1 to 1000(如果页面上的link 大于1000怎么办?)
    不管1000个link的可能性如何,至少觉得不严密。
    如果真的要计算page上的links数,还不如直接使用 standard checkpoint (QTP Tutorial 上)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2007-5-21 00:52:30 | 只看该作者
    太谢谢了!!!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2007-5-7 17:46:36 | 只看该作者

    回复 #10 shengyan 的帖子

    10F的,我用了可以,但是唯一的一点就是:要把所要测试的Link写到一个数组里,并且要改变For循环的次数。就这一点不太好。但是要参数化的Link不需要加到对象库也能运行。能写出这么强的代码,已经很不错了。

    再次感谢

    [ 本帖最后由 alex_82712 于 2007-5-7 17:52 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2007-5-7 11:57:10 | 只看该作者

    回复 #26 Hunter 的帖子

    Hunter兄
    我按照你给的代码,运行了,有点问题
    因为我的系统在每一个页面都会有一个Log out的Link,所以每次检查到这个Link的时候,就点了它退出了,之后了,退出到登陆界面,又有一个Forget password的Link,所以它就不停的去点这个Link。
    我想做的是,如果遇到Log out只是检查不要点击它,必然就没发去检查Log out后面的Link了,这个语句该怎么写啊,就是说如果遇到Log out,不要点击这个Link,继续往下执行

    请教Hunter 兄以及各路高手帮忙解决一下!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2007-2-12 12:41:22 | 只看该作者
    楼主的这个参数化的方法很不错 :),如果为了检验页面所有的Link,我有个简单方法
    我分析一下搂主的意思:
    某个页面的所有的Link都点击并Check一遍。
    那么思路基本应该是:进入该页面(*)--〉点击Link--〉Page复位(*)--〉点击Link。。。。直到所有link被点击一次。
    即:
    Browser("Browser").Page("Page").Link("name:=我的初始页面").Click
    Browser("Browser").Page("Page").Sync
    For i=0 to 1000
            If Browser("Browser").Page("Page").Link("index:="&i).Exist Then
                    msgbox Browser("Browser").Page("Page").Link("index:="&i).GetRoProperty("name")//获得Link名称
                    Browser("Browser").Page("Page").Link("index:="&i).Click
                    Browser("Browser").Page("Page").Sync
                   {... ...} //此处可以根据Link名称进行Link页面的校验
                    Browser("Browser").Page("Page").Link("name:=我的初始页面").Click  //此句为页面复位作用
                    Browser("Browser").Page("Page").Sync
            Else
                    Exit For
            End If
    Next

    msgbox "该页面中Link的数量为:"&i
    //
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
    发表于 2007-2-6 15:43:18 | 只看该作者

    回复 #2 lovetest6 的帖子

    请教版主

    然后得到所有版面的名称,也就是link的名称。
    存到数组里面

    如何存进数组啊?

    我在研究你这个帖子,不知道怎么实现
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 23:19 , Processed in 0.082305 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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