51Testing软件测试论坛

标题: qtp调用外部function时遇到的问题 [打印本页]

作者: 隐形人    时间: 2007-12-20 17:15
标题: qtp调用外部function时遇到的问题
我试着搭建一个自动化测试框架:输入一个testfile.xls文件后,经过FUNCTION的处理,输出一个resultfile.xls
现将代码帖出来:
function 放在zhsl028文件里:
public Function zhsl028()


Dim Conn, Rs, Sql



' 创建数据库链接对象
Set Conn =CreateObject("ADODB.Connection")
Conn.ConnectionString ="XXXXXXXXX"
Conn.Open        '打开数据库链接

Set Rs = CreateObject("ADODB.RecordSet")

Sql = " XXXXXXXXXXXXX"


Rs.Open Sql, Conn, 1, 3        '打开记录集
Dim i

For i =1 to 3
datatable.GetCurrentRow

datatable.GetSheet("zhsl028").getparameter("ADSL接入号").valueByRow(i)=Rs("service_nbr")

Rs.MoveNext               


Next



        Rs.close
    conn.close





Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").WebElement("WebTable").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").WebElement("null").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_01").WebList("latnId").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_01").WebList("latnId").Select "H 合肥分公司"
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_01").WebEdit("conditionValue").Click





Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_01").WebEdit("conditionValue").Set DataTable("ADSL接入号", "zhsl028")
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_01").WebButton("查询").Click



'Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

wait(6)
If  Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Exist(1)Then
        Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
End If

wait(6)
If  Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Exist(1)Then
        Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
End If



'Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_02").Link("已购销售品").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("menu_down_frame").Link("改速率兼计费方式").Click
'Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
wait(6)
If  Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Exist(1)Then
        Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
End If
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("TAB_P_13982_iframe").WebList("serv_ofr_ext_18").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("TAB_P_13982_iframe").WebList("serv_ofr_ext_18").Select "K 宽带上网卡"
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("TAB_P_13982_iframe").WebList("serv_ofr_ext_114").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("TAB_P_13982_iframe").WebList("serv_ofr_ext_114").Select "20M"
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("mm_02").WebElement("业务经办信息  营销单号:  发展单位:").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("acceptInstInfo").WebButton("确定保存").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("TAB_P_13982_iframe").Link("<全部取消>").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("Frame_2").Link("[订单确认]").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Dialog("Microsoft Internet Explorer").WinButton("取消").Click
Browser("中国电信安徽分公司客户关系管理系统 V3.601").Page("中国电信安徽分公司客户关系管理系统 V3.601").Frame("CustChargeList").WebButton("返回用户查询").Click
zhsl028="pass|succesful"
End Function




主脚本如下:
TestFile = "e:\casesfile.xls"
ResultFile = "e:\resultfile.xls"

caseSheet =1'Specify the case sheet
varSheet = 2 'Specify the var value sheet

datatable.ImportSheet TestFile,1,"Global"
rcnt = DataTable.GetSheet(caseSheet).GetRowCount

iter =1
DataTable.GetSheet(caseSheet).SetCurrentRow iter
For iter = 1 to rcnt

        executeFlag=False       
        DataTable.GetSheet(caseSheet).SetCurrentRow iter       
    ScenarioName=DataTable("casename", caseSheet)
    Datatable("status", caseSheet)= ""
    Datatable("result", caseSheet)= ""
       
   results=eval(ScenarioName)
  
   msgbox results
        status = Split(results,"|")
        Datatable("status", caseSheet) = status(0)
        Datatable("result", caseSheet)= status(1)
        'DataTable.Export ResultFile
        datatable.Export  ResultFile
Next


当我把这俩个脚本合并成一个脚本时,可以正常运行,且结果与预期结果一致.但是,当我把这俩个脚本分开存放时,并在主脚本时调用function时,系统提示出错:
Error in called function.  
detail:Test line (1): "TestFile = "e:\casesfile.xls"".
Error details:
Function file: E:\zhsl028.vbs
Line (23): "datatable.GetSheet("Global").getparameter("ADSL接入号").valueByRow(i)=Rs("service_nbr")".
Description: The Sheet.GetParameter operation failed. The <ADSL接入号> column does not exist.

我已经把这个被调用 的function放到funtiong library中去了source--associated libray file
请问产生这个问题的原因是什么,要怎么解决???
作者: walker1020    时间: 2007-12-21 00:24
x信息提示:The <ADSL接入号> column does not exist.   ADSL接入号 这一列不存在
作者: 板砖    时间: 2007-12-21 10:05
看着就头晕!
作者: wuyu702    时间: 2007-12-21 11:50
学习




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