51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3494|回复: 10
打印 上一主题 下一主题

[求助] QTP函数调用

[复制链接]
  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2015-5-28 16:40:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    谁知道这个页面上的http://www.it165.net/pro/html/201304/5503.html ,Function ReadFile和Function GetTestObject函数怎么在QTP里面调用
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:25
  • 签到天数: 2806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2015-5-29 11:13:12 | 只看该作者
    把代码复制到你QTP里面,ReadFile函数是读取D:\new.xls文件中表sheet1,所以你需要在D盘建立new.xls文件,或者修改函数中文件为你自己的路径文件即可
    GetTestObject函数是根据你定义的变量名进行取值,及excel表中一共两列,一列是你定义的变量名,一列是变量值.
    如:excel中第一列为password ,1;通过函数GetTestObject("password ")就可以取得值为1,同理里面可以放很多变量名和值,根据需要取值即可.

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜你获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2015-5-29 14:15:37 | 只看该作者
    jingzizx 发表于 2015-5-29 11:13
    把代码复制到你QTP里面,ReadFile函数是读取D:\new.xls文件中表sheet1,所以你需要在D盘建立new.xls文件,或者 ...

    我改了GetTestObject函数的参数,怎么在QTP里面不执行是怎么回事
    Function GetTestObject(password)
    Dim objArray
    objArray=ReadFile("E:\vbs\122.xlsx","sheet1")
    For i=1 to UBound(objArray,1)
       If   objArray(i,1)=objName Then
        GetTestObject=objArray(i,2)

        Exit function
       End If
    Next
    End Function
    Excel是这样显示的
    password        aaa
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202
    202        202


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:25
  • 签到天数: 2806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2015-5-29 14:52:11 | 只看该作者
    jix11 发表于 2015-5-29 14:15
    我改了GetTestObject函数的参数,怎么在QTP里面不执行是怎么回事
    Function GetTestObject(password)
    D ...

    Excel是这样写的
    password        202
    aaa        202
    bbb       202
    ccc        202
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2015-5-29 16:12:42 | 只看该作者
    jingzizx 发表于 2015-5-29 14:52
    Excel是这样写的
    password        202
    aaa        202

    我按照你说的执行了QTP,但是QTP没有执行GetTestObject这个函数


    代码是这样
    Function ReadFile(sFileName,sSheetName)
    Dim oExcelapp
    Dim oExcel
    Dim oSheet
    ' Dim oRange
    ' Dim arrRange
    On Error resume next
      '创建EXCEL 应用程序对象
      Set oExcelapp=CreateObject("Excel.Application")
      oExcelapp.Visible = True
      If err.number <>0 Then
       msgbox "未能初始化Excel"&vbCrLf&_
              "请确保Excel已安装",  vbcritical
       Exit function
      End If
    On error goto 0
    On Error resume next
      '打开Excel文件
      set oExcel=oExcelapp.Workbooks.Open(sFileName)
      oExcel.Worksheets(sSheetName).Activate
      If err.number <>0 Then
       msgbox "未能加载Excel文件"&vbCrLf&_
              "请确保Excel文件路径正确或格式正确",  vbcritical
       Exit function
      End If
      On error goto 0
      '获取表的使用范围 www.it165.net
      'Set oSheet=oExcel.Worksheets(sSheetName).UsedRange
      Set oSheet=oExcel.Worksheets(sSheetName).UsedRange
      Set oRange=oSheet.Range("A1:Z200")
      arrRange=oRange.value
      oExcelapp.Workbooks.Close
      Window("text:=Microsoft Excel").Close
      ReadFile=arrRange
      
      '无用语句
    '  Set oSheet=oExcel.Worksheets(sSheetName)
    '  For i=1 to 100
    '   If  oSheet.cell(i,1).value= lookupstr Then
    '    ReadFile=oSheet.cell(i,2).value
    '    Exit function
    '   End If
    '  Next
    ''  关闭工作薄
    '  oExcelapp.Workbooks.Item(1).Close
    ''  退出Excel
    '  oExcelapp.Quit
    '  Set oExcelapp=nothing
    End Function
    '指定参数取用
    '输入:
    '    ObjName:测试对象名称
    ' 返回:测试对象名称对应的字符串
    Function GetTestObject(password)
    Dim objArray
    objArray=ReadFile("E:\vbs\122.xlsx","sheet1")
    For i=1 to UBound(objArray,1)
       If   objArray(i,1)=objName Then
        GetTestObject=objArray(i,2)

        Exit function
       End If
    Next
    End Function




    E:\截图\QQ截图20150529161008.png

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:25
  • 签到天数: 2806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    6#
    发表于 2015-5-30 22:06:30 | 只看该作者
    你理解错了,你写的只是函数定义,GetTestObject中函数参数不是password,还是原先objName,你用的时候要单独写:把刚才说的改完之后,在后面可以这样写
    Dim Password
    Password=GetTestObject(password)
    这样就取出来值了,你再试试,password可能要加引号,忘了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2015-6-1 10:42:14 | 只看该作者
    jingzizx 发表于 2015-5-30 22:06
    你理解错了,你写的只是函数定义,GetTestObject中函数参数不是password,还是原先objName,你用的时候要单独 ...

    可是这样取出来的是1个值,我想要的是一列的值,这个怎么操作
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:25
  • 签到天数: 2806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    8#
    发表于 2015-6-1 13:52:32 | 只看该作者
    jix11 发表于 2015-6-1 10:42
    可是这样取出来的是1个值,我想要的是一列的值,这个怎么操作

    是取得一个值,这个函数设计的就是根据参数名,取出一个值;
    你想取出一列值,自己改第二个函数就行了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
     楼主| 发表于 2015-6-1 17:26:26 | 只看该作者
    jingzizx 发表于 2015-6-1 13:52
    是取得一个值,这个函数设计的就是根据参数名,取出一个值;
    你想取出一列值,自己改第二个函数就行了

    可不可以在麻烦你告诉我这个函数怎么改
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 11:25
  • 签到天数: 2806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    10#
    发表于 2015-6-2 10:01:45 | 只看该作者
    jix11 发表于 2015-6-1 17:26
    可不可以在麻烦你告诉我这个函数怎么改

    你试试,取得是一列,参数名放到第一排
    Function GetTestObject(objName)
    Dim objArray
    Dim all(198)
    objArray=ReadFile("E:\vbs\122.xlsx","sheet1")
    For i=1 to UBound(objArray,2)
        If   objArray(1,i)=objName Then
            For j=0 to 198
                       all(j)=objArray(j+2,i)
                      next
             GetTestObject=all
        Exit function
       End If
    Next
    End Function
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-4-17 14:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
     楼主| 发表于 2015-6-4 16:06:12 | 只看该作者
    jingzizx 发表于 2015-6-2 10:01
    你试试,取得是一列,参数名放到第一排
    Function GetTestObject(objName)
    Dim objArray

    谢谢,我电脑重装系统了,所以现在才回复你,我执行了你这段代码,是可以执行的,但是循环打印出来,就不能用之前的这个方法
    Dim Password
    Password=GetTestObject("password")
    print Password
    这个要怎么用
    实在不好意思,真的不知道,不要嫌弃菜啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-9 01:48 , Processed in 0.071722 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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