背景
我有一个 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
我正在等待的对象的快照:
答案 0 :(得分:0)
也许此链接上的信息可以帮助您!
whats is the difference between UIObject and UIObject2 other than UIAutomator 2.0 version name?
答案 1 :(得分:0)
TC中的实际错误是什么?
我还建议尝试使用record关键字测试,然后将其转换为脚本
现在你可以增加你的最大超时值,但你的while循环仍然有一个硬上限。我建议使用上面文章中列出的方法之一,因为它们会使TestComplete等到您的进程/对象完全加载,无论已经过了多长时间。这样,你就不会再遇到当前的问题了。
答案 2 :(得分:0)
这是创建相同对象第二版的名称映射。
进入“名称映射”并编辑属性以仅使用静态属性,这样就不会创建同一UIObject的新版本。