'1.运行主程序
'2.加载测试数据表
'3.加载控件列表
'4.加载控件名注释表
'5.运行测试数据
'5.1运行到第一行测试数据
'5.2检查控件列表中的控件,读取名称
'5.3查询控件名注释表,获取控件,构造脚本
'5.4检查控件列表中的控件,获取操作,构造脚本
'5.5检查控件列表中的控件,获取参数,在测试数据表中加入参数,构造脚本
'5.6执行测试脚本
'第五点反复执行,直到测试数据测试完成
call datatable.AddSheet("testCase")
call datatable.ImportSheet(".\testData.xls","testCase","testCase")
call datatable.AddSheet("controltable")
call datatable.ImportSheet(".\controltable.xls","controlxls","controltable")
call datatable.AddSheet("controlremark")
call datatable.ImportSheet(".\controlremark.xls","controlremarkxls","controlremark")
SystemUtil.Run "E:\QTPTest\autotest\TestPark.exe","","E:\QTPTest\autotest",""
'/*******************************************************************/
'获取父窗口
Dim ParentDir
Function GetParentDir(row, col)
Dim parent
'datatable.GetSheet("controlremark").SetCurrentRow(row)
For i = row To 1 Step -1
datatable.GetSheet("controlremark").SetCurrentRow(i)
parent = datatable("L" + CStr(col), "controlremark")
If parent <> "" Then
ParentDir = datatable("controlType", "controlremark") + "(" +chr(34) +parent + chr(34) + ")" + "." + ParentDir
'col = col - 1
If col <= 1 Then
GetParentDir = ParentDir
Exit Function '这个怎么好像出问题呢
i = 0
Else
call GetParentDir(i-1,col-1)
i = 0
End If
'else
'datatable.GetSheet("controlremark").SetCurrentRow(i-1)
End If
'if i > 1 Then
' datatable.GetSheet("controlremark").SetCurrentRow(i-1)
'End If
next
End Function
'/*******************************************************************/
'/*******************************************************************/
'获取参数
Function GetParam(param)
'datatable.GetSheet("testCase").SetCurrentRow(di)
GetParam = datatable(cstr(param), "testCase")
End Function
'/*******************************************************************/
'/*******************************************************************/
'获取操作
Function GetOperation(col)
Dim op
datatable.GetSheet("controltable").SetCurrentRow(col)
p=datatable("operation", "controltable") + " " '获取操作的名称,如Set操作
If datatable("param" + CStr(1), "controltable") <> "" Then '判断参数是否为空,不为空则加入参数
If datatable("type" + CStr(1), "controltable") = "string" Then '参数是否字符串,第一个参数
'op = op + chr(34) +datatable("param" + CStr(1), "controltable") + chr(34)
op = op + chr(34) +GetParam(datatable("param" + CStr(1), "controltable")) + chr(34)
else
'op = op +datatable("param" + CStr(1), "controltable")
p = op +GetParam(datatable("param" + CStr(1), "controltable"))
end if
else
GetOperation = op
Exit Function
end if
For i = 2 to 20 '第二至20个参数.
If datatable("param" + CStr(i), "controltable") <> "" then
If datatable("type" + CStr(i), "controltable") = "string" then
'op = op + chr(34) +datatable("param" + CStr(1), "controltable") + chr(34)
op = op + chr(34) +GetParam(datatable("param" + CStr(i), "controltable")) + chr(34)
else
'op = op +datatable("param" + CStr(1), "controltable")
op = op +GetParam(datatable("param" + CStr(i), "controltable"))
end if
else
GetOperation = op
Exit function
end if
Next
End Function
'/*******************************************************************/
'/*******************************************************************/
'测试用例执行入口
Sub RunTestCaseEntry(testCaseTable, tControlTable, tControlRemark)
Dim dataCount
Dim controlCount
Dim remarkCount
Dim ExecStr
dataCount=datatable.GetSheet(testCaseTable).GetRowCount() '用例表
controlCount=datatable.GetSheet(tControlTable).GetRowCount() '控件名称表
remarkCount=datatable.GetSheet(tControlRemark).GetRowCount() '控件注释,根据名称找到ID
datatable.GetSheet(testCaseTable).SetCurrentRow(1)
datatable.GetSheet(tControlTable).SetCurrentRow(1)
datatable.GetSheet(tControlRemark).SetCurrentRow(1)
Dim di
Dim ci
Dim ri
For di = 1 to dataCount '用例表循环
If datatable("Execute", testCaseTable) = "1" or datatable("Execute", testCaseTable) = 1 Then '用例是否执行
For ci = 1 to controlCount '控件名称表循环
Dim conName
Dim getConName
If datatable("exec", tControlTable) = "1" Then '是否对控件进行操作
conName = datatable("name", tControlTable) '获取控件名称
For ri = 1 to remarkCount '根据控件表名称查找注释表控件名称,注释表循环
datatable.GetSheet(tControlRemark).SetCurrentRow(ri)
getConName = datatable("name", tControlRemark)
If getConName = conName Then '控件表和控件注释表名称是否相同
Dim ccol
Dim idcol
For ccol = 1 To 20 '注释表中查找控件ID循环
If datatable("L" + CStr(ccol), tControlRemark) <> "" Then
ExecStr = datatable("L" + CStr(ccol), tControlRemark)
idcol = ccol
ccol = 21
End If
Next
'ExecStr = conName
If ri = 1 Then
ri = remarkCount '退出for循环
Else
ParentDir = ""
'ExecStr = ""
'ExecStr = GetParentDir(ri, idcol) + "." + datatable("controlType", tControlRemark) + "(" + ExecStr + ")" '获取父节点
call GetParentDir(ri, idcol) '获取控件的父窗口,存入变量ParentDir中
End If
'获取操作
ExecStr = ParentDir + GetOperation(ci)'
'ExecStr = ExecStr + GetOperation(ci)
'ExecStr = "Dialog("+chr(34)+"testPark"+chr(34)+").WinEdit("+chr(34)+"进场时间"+chr(34)+").Set " + chr(34) + "2010-02-02 15:30:00"+ chr(34)
'ExecStr = "Dialog("+"testPark"+").WinEdit("+"进场时间"+").Set " + "2010-02-02 15:30:00"
Execute ExecStr
wait 0, 100
ri = remarkCount '退出for循环
End If
datatable.GetSheet(tControlRemark).SetNextRow()
Next
else
'datatable.GetSheet(tControlTable).SetNextRow()
End If
datatable.GetSheet(tControlTable).SetNextRow()
Next
'Dialog("testPark").WinButton("确定").Click
'wait 10
end if
datatable.GetSheet(testCaseTable).SetNextRow()
Next
End Sub
'/*******************************************************************/
Sub TestCaseManage() '用例管理
Call RunTestCaseEntry("testCase", "controltable", "controlremark")
End Sub
Sub TestModelManage() '模块管理
Call TestCaseManage()
End Sub
Call TestModelManage()