您好,登錄后才能下訂單哦!
今天寫了一個程序安裝的自動化腳本,調試的時候發現有些控件的值獲取后一直未自動刷新,鑒于該問題,仔細分析和請教后,發現TestComplete不會自動刷新控件中變化的值,這需要我們自己去控制刷新。
1、定義一個延遲函數(參數:延遲秒數,執行延遲的條件)
Function TimeDelay(DelaySeconds,condition)
Dim interval,startTime
startTime=Time
Do While CBool(condition)
sleep(DelaySeconds*1000)
interval=Second(Time - startTime)
If interval =40 Then
Log.Error("Time Out.")
Exit Do
End If
Loop
End Function
2、Namemapping 一個顯示進度的控件(控件的value:0%-100%):
Set InstallProgress = Aliases.SQLNav.frmSQLNavWizard.panelMain.panelFrameHolder.SelectProduct.pnlNewProducts.pnlRightInstallProgress.labelInstallProgress
3、在腳本中調用函數:
Call TimeDelay(2,InstallProgress.Caption<>"100%")
發現會一直延遲,直到超過指定間隔Time Out,原因就是最上面分析的,控件InstallProgress.Caption的值沒有動態刷新,獲取的是調用時的值,后面一直未改變。
4、修改腳本:
對于具有動態值的控件,使用上面的延遲函數顯然不合適,對于具有動態值的控件下的延遲處理,可單獨寫一段腳本處理,使用TestComplete自帶的方法RefreshMappingInfo()只刷新該控件 :
Dim beginTime
beginTime = time
Do While InstallProgress.Caption<>"100%"
sleep(2000)
InstallProgress.RefreshMappingInfo
If Second(time - beginTime) =40 Then
Log.Error("Time Out.")
Exit Do
End If
Loop
或者是在函數中加入sys.refresh()刷新整個程序,不過不建議使用這種,整個刷新很耗性能的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。