QTP中运行错误的捕捉和记录

在自动化程序的运行过程中,经常因为环境问题或者代码本身不完善而出现流程不能顺利进行下去的情况,或者会有一些“随机”的提示框(如“操作太快,页面不能及时处理”),这时QTP会产生错误提示,对于这些提示,完全忽略不可取,最好的是及时记录当前错误内容,重复当前操作,当错误提示累计到一定数量,中止当前流程。

 

本文提供一种QTP运行错误的捕捉和记录方法

 

结合QTP本身的场景恢复机制,可以很好的解决该问题

 

首先在恢复场景中定义场景恢复策略

 

选择需要捕捉的错误种类

定义捕捉错误后的处理,此处定义一个异常处理函数

 

函数定义如下:

 

 

'----------------------------------------------------------------

'函数功能:对象错误记录

'修改说明: ADD BY WeiWei 2007.07

'----------------------------------------------------------------

‘ 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

      

End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值