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

Vbscript 测试完全自动化-等待加载对象的问题,vbscript,testcomplete,Vbscript,Testcomplete,背景: uiObject = Aliases.SonataRDA.Login_Window intMaxTimeOut = 120 我有一个JAVA应用程序,我们在上面运行我们的测试完成脚本(我们最近从UFT迁移到了TestComplete,所以TC对我们来说有点新)。使用的脚本语言是VBScript 问题: uiObject = Aliases.SonataRDA.Login_Window intMaxTimeOut = 120 为了处理缓慢的应用程序行为,我创建了一个函数,在对对象执行任

背景:

uiObject = Aliases.SonataRDA.Login_Window
intMaxTimeOut = 120
我有一个JAVA应用程序,我们在上面运行我们的测试完成脚本(我们最近从UFT迁移到了TestComplete,所以TC对我们来说有点新)。使用的脚本语言是VBScript

问题:

uiObject = Aliases.SonataRDA.Login_Window
intMaxTimeOut = 120
为了处理缓慢的应用程序行为,我创建了一个函数,在对对象执行任何操作之前,它会等待对象加载并在屏幕上可见。但是,有时该功能不起作用。我的意思是,即使对象已加载且在屏幕上可见,函数仍会继续等待对象,即,
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
'============================================================================================================
'函数名称:fn_waitForObject
'目的:等待对象存在并在屏幕上可见
“创建日期:2018年6月4日
'返回类型:如果对象存在且可见,则为true;如果对象不存在,则为false
'参数:uiObject-脚本等待在屏幕上显示的对象
'intMaxTimeOut-以秒为单位的最大超时
'============================================================================================================
函数fn_waitForObject(uiObject,intMaxTimeOut)
Dim intCounter:intCounter=0
执行时(intCounter
我正在等待的对象的快照:

uiObject = Aliases.SonataRDA.Login_Window
intMaxTimeOut = 120

对象间谍

也许此链接上的信息可以帮助您


TC中的实际错误是什么

你看到这个链接了吗

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


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

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

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