发布新日志

  • [论坛] ~~~实现参数共享的五种方法~~~

    2008-03-25 21:21:56

       

    实现参数共享的五种方法.doc
    (2008-03-25 21:14:00, Size: 27 kB, Downloads: 0)


              QTP中对象的共享是通过对象库共享的,有时候我们需要把一些参数提供给其他脚本使用,那么就需要对参数进行共享,参数的共享方式有很多,以下test文件均包含action1action2action3,其中action2action3设置为reuseable action
    No1使用环境变量实现的test
    (当然也可以在setting中手工或者导入xml的方式批量设置环境变量)
    action1
    environment.Value("aaa")=10
    environment.Value("bbb")=20
    RunAction "Action2", oneIteration
    RunAction "Action3", oneIteration
    -------------------------------------
    action2
    a=environment.Value("aaa")
    b=environment.Value("bbb")
    msgbox a
    msgbox b
    -------------------------------------
    output 10,20
    -------------------------------------
    action3
    msgbox a
    msgbox b
    -------------------------------------
    output nothing

    -------------------------------------
    No2使用全局变量实现的test
    (缺点是虽然在action1中已经声明定义了abaction2中还得声明和定义否则象action3不能输出)
    action1
    Public a
    a="c"
    Public b
    b="d"
    RunAction "Action2", oneIteration
    RunAction "Action3", oneIteration
    -------------------------------------
    action2
    Public a
    a="a"
    Public b
    b="b"
    msgbox a
    msgbox b
    -------------------------------------
    output a b
    -------------------------------------
    action3
    msgbox a
    msgbox b
    output nothing
    -------------------------------------
    No3使用globalsheet实现的test
    (当使用的变量比较多的时候,这种方式一目了然)
    action1
    RunAction "Action2", oneIteration
    RunAction "Action3", oneIteration
    -------------------------------------
    action2
    datatable.SetCurrentRow(2)
    a=datatable.Value("A","Global")
    b=datatable.Value("B","Global")
    msgbox a
    msgbox b
    -------------------------------------
    output 1020
    -------------------------------------
    action3
    msgbox a
    msgbox b
    output nothing
    -------------------------------------

    No4 input parameteroutput parameter实现参数间的传递

    例如actionA cationB 的传递参数,可以用通过设置action propertyinput parameteroutput parameter实现,具体参看相关文档,这种比较适合某两个action之间的参数传递

    No5repository parameters实现

    qtp9x中,resources->object repositoy Manager->tools->manage repository parameters
    可以把参数和相关的对象库关联起来,具体操作参看帮助文件,这种方法个人认为不太方便,每次使用的时候还得关联相应的参数,不太推荐



    [ 本帖最后由 flyfly310 于 2008-3-25 21:18 编辑 ]

  • [论坛] ~~4种参数化LINK的方法~~(举一反三,可以应用到很多对象上)

    2008-01-18 13:15:47

    看了maguschen的两种参数化LINK方法http://bbs.51testing.com/viewthread.php?tid=48945&highlight=2%D6%D6%B2%CE%CA%FD%BB%AFLINK%B5%C4%B7%BD%B7%A8,非常受益,另外想出了两种参数化LINK的方法,供大家参考,举一反三同样可以对webedit,webelement等对象进行参数化
    第一种:利用 Descrīption 对象For intLoop = 1 to N
        strText=DataTable.Value(...)
        Set LinkDesc = Descrīption.Create()
        LinkDesc ("Text").Value = strText
        Browser("").Page("").Link(LinkDesc).Click
        DataTable.GetSheet("").SetNextRow
    Next
    第二种:描述性编程For intLoop = 1 to N
        strText=DataTable.Value(...)
        Browser("").Page("").Link("text:=" & strText).Click
        DataTable.GetSheet("").SetNextRow
    Next
    第三种:利用SetToproperty方法(以sina为例)
    Step1:录制
    Browser("新浪首页").Page("新浪首页").Link("墨尔本北航热招营销硕士").click
    此时对象库如图1


    1.JPG

    Step2:欲点击其他新闻
    Browser("新浪首页").Page("新浪首页").Link("北大私募基金/企业上市").Click
    '点击北大...新闻
    Browser("新浪首页").Page("新浪首页").Link("北大私募基金/企业上市").SetTOProperty"text","清华深圳创业板/私募班"
    Browser("新浪首页").Page("新浪首页").Link("北大私募基金/企业上市").Click
    '点击清华...新闻
    Setp3:写循环语句
    For intLoop = 1 to N
        strText=DataTable.Value(...)

        Browser("新浪首页").Page("新浪首页").Link("北大私募基金/企业上市").SetTOProperty"text","strText"
        DataTable.GetSheet("").SetNextRow
    Next

    第四种:利用参数化对象的Text属性实现
    Step1:录制
    Browser("新浪首页").Page("新浪首页").Link("墨尔本北航热招营销硕士").click
    此时对象库如图1
    [attach]38407[/attach]

    Step2:参数化Text属性,见下图2,步骤省略


    2.JPG
    Step3:写循环或者设置Action run call propertiesrun on all rows即可



    [ 本帖最后由 flyfly310 于 2008-1-18 13:04 编辑 ]
Open Toolbar