发布新日志

  • QTP - 参数化LINK的方法汇总

    2011-07-13 10:48:59

    【转】以下帖子总结了4种方法:
    http://bbs.51testing.com/viewthread.php?tid=104648&extra=&page=1

    第一种:利用 Description 对象
    For intLoop = 1 to N
        strText=DataTable.Value(...)
        Set LinkDesc = Description.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

    Step2:欲点击其他新闻(等于是用同一个录制好的link对象,只是改变其text属性,然后click的时候就会等于click不同的link,因为link(“”)括号里的只是对象名,可以在object repository里改,并不是任何属性)
    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属性实现(这个也是新知道的,object repository里的属性居然也能参数化)
    Step1:录制
    Browser("新浪首页").Page("新浪首页").Link("墨尔本北航热招营销硕士").click
    此时对象库如图1


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


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

     

     

    其中,第三种方法在另一个帖子里我找到了实例,并且实践了一下(下面的例子和上面4个方法还有一个不同是,上面4个方法link的text属性从datatable中获取,这里是自动从页面获取):
    http://bbs.51testing.com/thread-20178-1-4.html

    Browser("Browser").Page("Page").Sync (这个是blank页面的对象,可以用添加到对象库来添加)
    Browser("Browser").Navigate("
    http://bbs.51testing.com/default.php")
    Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").Sync

    Set tags=Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").Object.links
    Dim i,j, arr()
    i=0
    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

    For j=0 to i
    Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").Link("[软件测试新手上路]").SetTOProperty "Text",arr(j)
                Browser("51Testing软件测试论坛 软件测试 |").Page("51Testing软件测试论坛 软件测试 |").Link("[软件测试新手上路]").Click
    Browser("51Testing软件测试论坛 软件测试 |").Back
    Next

    练习代码路径:Test\ClickURL

Open Toolbar