QTP:从嵌套函数退出测试

时间:2017-07-24 18:20:18

标签: vbscript automated-tests qtp hp-uft

我的测试有多个嵌套函数。可以从任何其他函数调用任何函数。在一个步骤中,我需要读取错误消息om网页并重试,忽略或中止:

Function DataProcess_Errors (Arg1, Arg2, Arg3, Arg4)
If Mybrowser1.WebTable("html tag:=TABLE","html id:=Table2","name:=WebTable","visible:=True").WebElement("html tag:=DIV", "html id:=divErrorMsg").Exist(1) Then
If Len(Mybrowser1.WebTable("html tag:=TABLE","html id:=Table2","name:=WebTable","visible:=True").WebElement("html tag:=DIV", "html id:=divErrorMsg").GetROProperty("innertext"))>0 Then
BtnClicked = msgbox (Mybrowser1.WebTable("html tag:=TABLE","html id:=Table2","name:=WebTable","visible:=True").WebElement("html tag:=DIV", "html id:=divErrorMsg").GetROProperty("innertext"), 18, "Error occured")
    If BtnClicked = 3 Then 'if clicked "Abort" 
        ExitRun
    ElseIf BtnClicked = 4 Then 'if clicked "Retry"
        Call DataProcess_Errors (Arg1, Arg2, Arg3, Arg4) 'call this function
    ElseIf BtnClicked = 5 Then 'if clicked "Ignore"
        Exit Function 'continue to next step
    End If    
ElseIf Mybrowser1.WebElement("html tag:=DIV", "html id:=divInfo").Exist(1) Then
print Mybrowser1.WebTable("html tag:=TABLE","html id:=Table2","name:=WebTable","visible:=True").WebElement("html tag:=DIV", "html id:=divInfo").GetROProperty("innertext") 
End If
End If
End Function

问题是,该功能不会退出测试。我尝试了ExitTestExitRunExitAction - 没有一个退出测试但继续下一步。 接下来尝试:

Dim qtAppObj : Set qtAppObj = CreateObject("quicktest.application")
qtAppObj.Test.Stop

有了这个UFT敌人进行调试并暂停 - 没有任何作用,只能从任务管理器中“杀死”UFT。

任何建议,任何建议?

P.S。 (Arg1,Arg2,Arg3,Arg4)应该在那里,因为所有函数都由GetRef调用,它应该将这些变量传递给库中所有函数的90%。

1 个答案:

答案 0 :(得分:0)

有同样的问题,并且至少花了两个小时修复。

ExitTestExitActionExitComponent对我不起作用是 由在其之前的顺序中设置On Error Resume Next引起的。 更准确地说,它以前只是设置为一种功能。

为了快速说明。

On Error Resume Next
Check something
For a certain condition: Call ExitRun("TEST")

Public Function ExitRun(str_inExitType)
On Error Goto 0
Select Case UCase(str_inExitType)
Case "TEST" ExitTest
End Function

即使在ExitRun函数中有On Error Goto 0,它也无法正常工作。

我不得不在以前将其设置为On Error Goto 0的函数中将其设置回On Error Resume Next

On Error Resume Next
Check something
On Error Goto 0
For a certain condition: Call ExitRun("TEST")

很奇怪,不明显。