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

问题描述 投票:0回答:3

背景:

我有一个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

vbscript testcomplete
3个回答

0
投票

TC中的实际错误是什么?

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

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

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


0
投票

名称映射创建同一对象的第二个版本。

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

© www.soinside.com 2019 - 2024. All rights reserved.