GUI object synchronization - custom function (QTP, VBScript)

Categories: RobustnessSource code

Custom function implementing a more advanced synchronization point.

The function will wait for the object to become existing and enabled, or to disappear (not existing). The maximum time to wait could be defined or taken by default.

Used resources:

Anti sleep function (QTP, VBScript, MercuryTimer, DeviceReplay)

Service Functions – String (QTP, VBScript)

'Default Obj Sync 
Private Const Object_SyncTime_Max = 60 ' 1 minute
Public Function WG_ObjSync(ByRef objName, ByVal objParameter)
 Dim boolRC
 Dim sTypeName
 Dim intSync, boolStateAppear
 'Verify parameters
 sTypeName = TypeName (objParameter)
 If sTypeName <> "Dictionary" Then
 Set objParameter = CreateObject("Scripting.Dictionary")
 End If
 'Sync
 If objParameter.Exists("p.sync") Then
 intSync = IntVal(objParameter.Item("p.sync"))
 If intSync <= 0 Then
 intSync = Object_SyncTime_Max
 End If
 Else 
 Set objParameter = Nothing
 Exit Function
 End If
 If UCase(objParameter.Item("p.state")) = "DISAPPEAR" Then
 boolStateAppear = FALSE
 Else
 boolStateAppear = TRUE
 End If
 'Sync loop
 MercuryTimers("WG.Timer1").Start
 Do
 boolRC = objName.Exist(0)
 'Check
 Select Case boolStateAppear
 Case TRUE
 If boolRC Then
 boolRC = objName.CheckProperty("enabled", 1, 0)
 If boolRC Then
 MercuryTimers("WG.Timer1").Stop
 Set objParameter = Nothing
 Exit Function
 End If
 End If
 Case FALSE
 If Not boolRC Then
 MercuryTimers("WG.Timer1").Stop
 Set objParameter = Nothing
 Exit Function
 End If
 End Select
 'Anti Sleep
 AntiSleep
 'Timeout?
 If CInt(MercuryTimers("WG.Timer1").ElapsedTime/1000) > intSync Then
 MercuryTimers("WG.Timer1").Stop
 Set objParameter = Nothing
 Exit Function
 End If
 Loop
End Function

Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported
This work by the author is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.