Enumerating Application Objects

The code below illustrates one way of enumerating the application objects while performing an operation on each object.

Function EnumerateApp(ParentObj, Desc, OperationMethod, PostOperationMethod, RestoreMethod)

dim ObjCol, CurrentObj, idx

idx = 0

' Retrieve a collection of all the objects of the given description

Set ObjCol = ParentObj.ChildObjects(Desc)

Do While (idx < ObjCol.Count)

' Get the current object

set CurrentObj = ObjCol.item(idx)

' Perform the desired operation on the object

eval("CurrentObj." & OperationMethod)

' Perform the post operations (after the object operation)

eval(PostOperationMethod & "(ParentObj, CurrentObj)")

' Return the application to the original state

eval(RestoreMethod & "(ParentObj, CurrentObj)")

idx = idx + 1

' Retrieve the collection of objects

' (Since the application might have changed)

Set ObjCol = ParentObj.ChildObjects(Desc)

Loop

End Function

' ********************************** An Example of usage **********************

' Report all the pages referred to by the current page

' ***********************************************************************************

Function ReportPage(ParentObj, CurrentObj)

dim FuncFilter, PageTitle

PageTitle = ParentObj.GetROProperty("title")

FuncFilter = Reporter.Filter

Reporter.Filter = 0

Reporter.ReportEvent 0, "Page Information", "page title " & PageTitle

Reporter.Filter = FuncFilter

End Function

Function BrowserBack(ParentObj, CurrentObj)

BrowserObj.Back

End Function

' Save the Report Filter mode

OldFilter = Reporter.Filter

Reporter.Filter = 2 ' Enables Errors Only

' Create the description of the Link object

Set Desc = Description.Create()

Desc("html tag").Value = "A"

Set BrowserObj = Browser("creationtime:=0")

Set PageObj = BrowserObj.Page("index:=0")

' Start the enumeration

call EnumerateApp(PageObj, Desc, "Click", "ReportPage", "BrowserBack")

Reporter.Filter = OldFilter ' Returns the original filter

No comments: