本文提供一種QTP運行錯誤的捕捉和記錄方法
結合QTP本身的場景恢復機制,可以很好的解決該問題
首先在恢復場景中定義場景恢復策略
選擇需要捕捉的錯誤種類
定義捕捉錯誤后的處理,此處定義一個異常處理函數
函數定義如下:
'----------------------------------------------------------------
'函數功能:對象錯誤記錄
'修改說明: ADD BY
'----------------------------------------------------------------
‘ Object-出錯對象;Method-對象當前的方法;Argu-對象當前方法的參數;retval-當前錯誤的返回值(errCode)
Function RecordErr(Object, Method, Arguments, retVal)
wait 3
Dim ErrCode,ErrDesc,ArgCount,WrongInfo,ArgList
Dim i,blankStr,ErrCount,CurRow
‘在Globaltable中記錄累計錯誤數
CurRow = DataTable.GlobalSheet.GetcurrentRow
DataTable.GlobalSheet.SetcurrentRow 1
If Environment ("ActionName")<> datatable.Value("CurAction",dtGlobalSheet) Then
datatable.Value("CurAction",dtGlobalSheet) = Environment ("ActionName")
datatable.Value("ErrCount",dtGlobalSheet) = 0
End If
ErrCount = CInt (datatable.Value("ErrCount",dtGlobalSheet))
blankStr = " "
ErrCode = retVal
If ErrCode = 0 Then
ErrDesc = "不明錯誤!"
Else
ErrDesc = DescribeResult(ErrCode)
End If
ArgCount = UBound(Arguments)
For i = 0 to ArgCount
ArgList = ArgList & CStr(i) & "--" & CStr(Arguments(i)) & "/"
Next
On Error Resume Next
‘獲取對象錯誤具體描述,此處使用了對象較通用的name屬性,部分對象沒有該屬性可能出錯
WrongInfo = "Object Name: " & Object.GetTOProperty("name") & vbCrLf _
& blankStr & "Current Method: " & Method & vbCrLf _
& blankStr & "ArgList: " & ArgList & vbCrLf _
& blankStr & "ErrDesc: " & ErrDesc
On Error GoTo 0
GE_logError "對象運行中出現錯誤--" & WrongInfo,micFail
Err.Clear
ErrCount = ErrCount + 1
‘累計錯誤達5次后退出當前流程
If ErrCount >= 5 Then
ErrCount = 0
datatable.Value("ErrCount",dtGlobalSheet) = ErrCount
DataTable.GlobalSheet.SetcurrentRow CurRow
routingname = ""
GE_logError "*****運行過程錯誤過多,退出本Aciton Iteration,請運行完成后檢查環境和腳本!*****",micFail
ExitActionIteration
End If
datatable.Value("ErrCount",dtGlobalSheet) = ErrCount
DataTable.GlobalSheet.SetcurrentRow CurRow
原文轉自:http://blog.csdn.net/xuyubotest/article/details/5211591