51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7244|回复: 28
打印 上一主题 下一主题

[原创] QTP相关的25个小技巧

[复制链接]
  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2011-11-30 21:48:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1、Q:runaction后面能不能接变量(动态调用action,所以从[url=]数据库[/url]取数据做action名字了,但是调用总是找不到)?
      A:脚本中原有RunAction "testbase [case1]", oneIteration把引号中的内容放到Global表中的第22行,然后将代码修改为:

    datatable.getsheet("Global")
    datatable.setcurrentrow(22)
    strLogin=DataTable("ActionName","Global")
    RunAction strLogin, oneIteration

      help中也有相关帮助,如:Syntax
    RunAction ActionName, [IterationMode , IterationRange , Parameters]
    ActionName : String : The name of the action
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    29#
    发表于 2012-2-28 15:40:05 | 只看该作者
    thanks for sharing
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2012-1-14 10:51:51 | 只看该作者
    学习了,感谢分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2012-1-14 09:40:18 | 只看该作者
    学习了,很受用。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2012-1-13 15:22:35 | 只看该作者
    不错  谢谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25#
    发表于 2011-12-13 22:49:17 | 只看该作者
    mark一下,以后可能会用到,多谢楼主整理~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    24#
    发表于 2011-12-10 21:28:16 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    23#
    发表于 2011-12-8 16:50:08 | 只看该作者
    相当不错,多谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22#
    发表于 2011-12-7 10:01:07 | 只看该作者
    不错,正在学习这方面的知识。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21#
    发表于 2011-12-2 21:39:25 | 只看该作者
    不错的~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2011-12-1 16:20:10 | 只看该作者
    不错;支持;
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-4-19 16:40
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    19#
    发表于 2011-11-30 21:54:25 | 只看该作者
    不错的技巧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    18#
     楼主| 发表于 2011-11-30 21:51:50 | 只看该作者
      25、Q:查询结果的比较

      这是查询一个字段的,对查询结果多页的情况也涉及了,其实应该把所有查询字段联合起来的,也就是改改sql语句和判断条件。

    [i]Set Conn = CreateObject("ADODB.Connection")
    Set Rs = CreateObject("ADODB.Recordset")
    Conn.Open "Descrīption=kml-it;DRIVER=SQL Server;SERVER=KML-IT;UID=saWD=password;APP=QuickTest Professional;WSID=KML-MICHELLE;DATABASE
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    17#
     楼主| 发表于 2011-11-30 21:51:37 | 只看该作者
     23、Q:和TD连接

      A:在QTP中不是有个Quality Center Connection,选择服务器连接,服务器处输入类似http://computer_name/tdbin,其中computer_name为服务器的名字,连接后在测试结果中添加defect就可以与TD相连了。

      24、Q:处理Windows弹出窗口

    A:IF Not Window("Flight Reservation").Exist(1) Then
    'Calling   open flight
            If not Dialog("Login").Exist(1)   Then
        Browser("管理系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

    End If
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    16#
     楼主| 发表于 2011-11-30 21:51:28 | 只看该作者
      22、Q:将测试数据单独拿出来

      A:取得一个

    Browser("Browser").Page("").WebList("fid").GetItem (1)

      取得全部

    Browser("Browser").Page("").WebList("fid").GetROProperty("all items")

      以下可以在自带的例子中实现

    Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"
    a=window("Flight Reservation").wincombobox("Fly From:").GetItem(1)
    reporter.ReportEvent 2,"下拉列表的值",a
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    15#
     楼主| 发表于 2011-11-30 21:51:20 | 只看该作者
     21、Q:网页下拉框的选择

    A:For i =1 to 10
    Randomize
    IndexNum=Int((10 - 5 + 1) * Rnd + 5)
    Browser("Mercury Tours").Page("Find Flights_2").WebList("arrive").Select "#"&IndexNum
    wait(3)
    Next

    Sub ChildObjects_Example()
    'The following example uses the ChildObjects method to find all the
    'list objects on a Web page, and then to select an item in each list.

    Set ōDesc = Descrīption.Create()
    oDesc("micclass").Value = "WebList"
    Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
    NumberOfLists = Lists.Count()
    For i = 0 To NumberOfLists - 1
    Lists(i).Select i + 1
    Next

    End Sub
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    14#
     楼主| 发表于 2011-11-30 21:51:11 | 只看该作者
      20、Q:如何一一获得Table中 某栏 link 的 text?

      A:通过上面link 的学习. 我终于融会贯通,完成了我的问题: 与大家共享:

    Browser("Login").Page("Page").Frame("contents").ViewLink("treeview").Image("Tplus").Click
    Browser("Login").Page("Page").Frame("contents").ViewLink("treeview").Image("Tplus_2").Click
    Browser("Login").Page("Page").Frame("contents").ViewLink("treeview").Link("开课设置").Click
    Browser("Login").Page("Page").Frame("main").WebList("drpStatus").Select "任意"
    Browser("Login").Page("Page").Frame("main").WebButton("查找").Click
    Browser("Login").Page("Page").Sync

    Dim finded,findCode,Nowout
    'define a constrat for find
    findCode = 110901
    finded = false

    Function MaxPage(pageString)
    'msgbox pageString
    Dim ilen,i,j
    ilen = len(pageString)
    i=ilen
    While i>0
           j = mid(pageString,i,1)
       'msgbox j
       If instr("123456789",j)>0 Then
              MaxPage = j
       'msgbox MaxPage
       Exit function
       End If
       i=i-1
    Wend
    End Function


    Dim trowcount,maxp
    trowcount = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").RowCount
    msgbox "Rowcount: "&trowcount
    Nowout = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").GetCellData(trowcount,1)
    Nowout = trim(Nowout)
    maxp = MaxPage(Nowout)
    msgbox "max page: "& maxp

    Dim nowPage,checkid
    For nowPage = 1 to maxp
       If   finded Then
       Exit for
    End If
       ' link to the 当前所需page
       If nowpage>1 Then
    Browser("Login").Page("Page").Frame("main_8").Link("[2]").SetTOProperty "Text","["&nowpage&"]"
    Browser("Login").Page("Page").Frame("main_8").Link("[2]").Click
    Browser("Login").Page("Page").Sync
    end if

       ' Get the rowcount of table in now page
    trowcount = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").RowCount
    msgbox "Rowcount: "&trowcount

       'link every record in the table of the page
    for i = 2 to trowcount   - 2
    Nowout = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").GetCellData(i,2)
    'msgbox i&": "&Nowout

    checkid = "dgCourse:_ctl" &(i+1)& ":_ctl0"
    Browser("Login").Page("Page").Frame("main_8").WebCheckBox("dgCourse:_ctl3:_ctl0").SetTOProperty "name",checkid
    Browser("Login").Page("Page").Frame("main_8").WebCheckBox("dgCourse:_ctl3:_ctl0").Set "ON"

    Browser("Login").Page("Page").Frame("main_8").Link("0901").SetTOProperty "Text",Nowout
    Browser("Login").Page("Page").Frame("main_8").Link("0901").Click
    Browser("开课设置详细信息").Page("开课设置详细信息").Sync
    'wait(1)
    msgbox "begun"
    msgbox findCode
    msgbox Nowout
    msgbox "finished"
    If   trim(findCode) = trim(Nowout) Then
           finded = true
    msgbox "find is ok!"
    wait(2)
    Exit for
    End If
    Browser("开课设置详细信息").Close
    Browser("Login").Page("Page").Sync
       next

    Next


    \
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    13#
     楼主| 发表于 2011-11-30 21:51:01 | 只看该作者
      18、QTP 在Debug狀態,在Export View 區域不能寫入任何東西

      A: 如果你的目的是在debug过程中修改已执行过的命令,可以在Debug view的Command中执行命令,如重新执行已经执行过的命令,修改变量的值等等。

      如:Window("Flight Reservation").WinEdit("Name:").Set "51testing"

      已经执行,如果现在想修改“51testing”为“testing”,可以在command中执行

      Window("Flight Reservation").WinEdit("Name:").Set "testing"

      19、Q:动态变化值如何获取

      A:VAL=Browser("欢迎使用我的工作台").Page("欢迎使用我的工作台").Frame("managePlace_7").WebRadioGroup("userAccountId_0").GetROProperty("Value")

      Browser("欢迎使用我的工作台").Page("欢迎使用我的工作台").Frame("managePlace_7").WebRadioGroup("userAccountId_0").select val
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    12#
     楼主| 发表于 2011-11-30 21:50:54 | 只看该作者
      17、Q: 如何参数化link

    Browser("Browser").Page("Page").Sync
    Browser("Browser").Navigate "http://www.51testing.com/cgi-bin/index.php"
    Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Sync

    Set tags=Browser("Browser").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("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[ 版主讨论区 ]").SetTOProperty "Text",arr(j)
             Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[ 版主讨论区 ]").Click
    Browser("Browser").Back
    Next

      这段代码先是打开一个空的页面,然后输入url.到达论坛首页。然后得到所有版面的名称,也就是link的名称,存到数组里面。然后使用SetTOProperty更换录制时候录下的link的属性,这时候再click。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    11#
     楼主| 发表于 2011-11-30 21:50:46 | 只看该作者
      15、Q:如何管理QTP的源代码?(QTP生成的源代码比较多,而且和环境控件都有关,假如需要多人同时开发, 请问如何管理源代码?)

      A: 一个是代码你可以通过vss,cvs等来进行管理

      一个是通过td或者qc的基于用例的代码管理

      其实第一种方法是基于版本控制来进行的,第二种方法是基于用例管理进行的

      角度不同,管理方法也不同,不过团队协作需要的大家分工明确,进度控制。代码管理可以借鉴开发的方法。

      16、Q:脚本不能回放,IE中的AtiveX设置有问题??

      A: TOOL---OPTIONS----Ative screen

      然后点开advanced..,把LOAD   ACTIVEX CONTROLS打勾

      TOOL---OPTIONS----Ative screen

      然后点开advanced..,run scrīpts-->disabled!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 07:53 , Processed in 0.104253 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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