测试完全自动化 - 等待加载对象的问题

时间:2018-06-05 08:29:15

标签: vbscript testcomplete

背景

我有一个 JAVA 应用程序,我们运行我们的测试完成脚本(我们最近已经从UFT迁移到TestComplete,所以TC对我们来说有点新)。使用的脚本语言是 VBScript

问题:

为了处理缓慢的应用程序行为,我创建了一个函数,它等待一个对象加载并在对该对象执行任何操作之前在屏幕上可见。但是,有时,该功能不起作用。通过这个,我的意思是即使对象已加载并在屏幕上可见,该函数仍然在等待对象,即uiObject.exists继续返回false,因为它一直在等待直到达到超时值。这里有人遇到过这个问题吗?

传递参数值:

uiObject = Aliases.SonataRDA.Login_Window
intMaxTimeOut = 120

代码

'============================================================================================================
'Function Name: fn_waitForObject
'Purpose:       To wait for an object to exist and become visible on screen
'Creation Date: 04-06-2018 
'Return type:   true, if the object exists and is visible; false, if the object doesn't exist
'Parameters:    uiObject - The object for which the script waits to get visible on screen
'               intMaxTimeOut - Maximum timeout in seconds
'============================================================================================================
function fn_waitForObject(uiObject,intMaxTimeOut)
    Dim intCounter : intCounter = 0
    Do While (intCounter < intMaxTimeOut)
        If uiObject.exists then
            Exit Do
        Else
            intCounter = intCounter + 1
            delay 1000
        End If
    Loop

    'If the object exists, make sure that it is visible on screen
    If uiObject.exists then
        Do While (intCounter < intMaxTimeOut)
            If uiObject.visibleonscreen then
                Log.Message "The object """&uiObject.toString&""" exists and is visible on screen"
                Exit Do
            Else
                intCounter = intCounter + 1
                delay 1000
            End If
        Loop
    End If
    fn_waitForObject = uiObject.visibleonscreen
End Function

我正在等待的对象的快照:

enter image description here

对象间谍 enter image description here

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

TC中的实际错误是什么?

你看过这个链接吗? https://support.smartbear.com/testcomplete/docs/app-objects/common-tasks/waiting-process-or-window-activation.html

我还建议尝试使用record关键字测试,然后将其转换为脚本

现在你可以增加你的最大超时值,但你的while循环仍然有一个硬上限。我建议使用上面文章中列出的方法之一,因为它们会使TestComplete等到您的进程/对象完全加载,无论已经过了多长时间。这样,你就不会再遇到当前的问题了。

答案 2 :(得分:0)

这是创建相同对象第二版的名称映射。

进入“名称映射”并编辑属性以仅使用静态属性,这样就不会创建同一UIObject的新版本。