背景:
我有一个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
我正在等待的对象的快照:
TC中的实际错误是什么?
我还建议尝试使用record关键字test,然后将其转换为脚本
现在你可以增加你的最大超时值,但你的while循环仍然有一个硬上限。我建议使用上面文章中列出的方法之一,因为它们会使TestComplete等到您的进程/对象完全加载,无论已经过了多长时间。这样,您就不会再遇到当前的问题了。
名称映射创建同一对象的第二个版本。
进入名称映射并编辑属性以仅使用静态属性,因此不会创建同一UIObject的新版本。