51Testing软件测试论坛

标题: QTP函数调用 [打印本页]

作者: jix11    时间: 2015-5-28 16:40
标题: QTP函数调用
谁知道这个页面上的http://www.it165.net/pro/html/201304/5503.html ,Function ReadFile和Function GetTestObject函数怎么在QTP里面调用
作者: jingzizx    时间: 2015-5-29 11:13
把代码复制到你QTP里面,ReadFile函数是读取D:\new.xls文件中表sheet1,所以你需要在D盘建立new.xls文件,或者修改函数中文件为你自己的路径文件即可
GetTestObject函数是根据你定义的变量名进行取值,及excel表中一共两列,一列是你定义的变量名,一列是变量值.
如:excel中第一列为password ,1;通过函数GetTestObject("password ")就可以取得值为1,同理里面可以放很多变量名和值,根据需要取值即可.
作者: jix11    时间: 2015-5-29 14:15
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



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

Excel是这样写的
password        202
aaa        202
bbb       202
ccc        202
作者: jix11    时间: 2015-5-29 16:12
jingzizx 发表于 2015-5-29 14:52
Excel是这样写的
password        202
aaa        202

[attach]95580[/attach]我按照你说的执行了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
作者: jingzizx    时间: 2015-5-30 22:06
你理解错了,你写的只是函数定义,GetTestObject中函数参数不是password,还是原先objName,你用的时候要单独写:把刚才说的改完之后,在后面可以这样写
Dim Password
Password=GetTestObject(password)
这样就取出来值了,你再试试,password可能要加引号,忘了
作者: jix11    时间: 2015-6-1 10:42
jingzizx 发表于 2015-5-30 22:06
你理解错了,你写的只是函数定义,GetTestObject中函数参数不是password,还是原先objName,你用的时候要单独 ...

可是这样取出来的是1个值,我想要的是一列的值,这个怎么操作
作者: jingzizx    时间: 2015-6-1 13:52
jix11 发表于 2015-6-1 10:42
可是这样取出来的是1个值,我想要的是一列的值,这个怎么操作

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

可不可以在麻烦你告诉我这个函数怎么改
作者: jingzizx    时间: 2015-6-2 10:01
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
作者: jix11    时间: 2015-6-4 16:06
jingzizx 发表于 2015-6-2 10:01
你试试,取得是一列,参数名放到第一排
Function GetTestObject(objName)
Dim objArray

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




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2