TestComplete - Find Child Objects
Parent page: GUI Recognition with TestComplete
TestComplete provides a whole set of run-time GUI recognition functionalities, based, however, on the same approach: recognition by property values and/or location of the object in internal hierarchy.
Today’s post is about FindAllChildren method
If proper selection of GUI recognition properties is challenge number zero for a beginner automation engineer, the real first one would be recognition of objects without unique set of recognition properties. As I mentioned, one possible way is to go up (from the object’s stand point) the hierarchy and identify parent or grand parent object that has a unique description. Although it sometimes helps, we may still have a family of objects corresponding to the same recognition properties. In some cases, that is enough, and we can simply retrieve them all in array by using FindAllChildren method (see line 57 in the code example below).
Note, that if no single object were found the returned array is empty (UBound gives -1).
Dim IEProcess, IExplore
Dim PropNames, PropValues, arrComboBox
Dim Page
Dim objForm, objLink, objComboBox
'Close browser
PropNames = Array("processname", "index")
PropValues = Array("iexplore", 1)
Set IEProcess = Sys.FindChild(PropNames, PropValues, 1, True)
If IEProcess.Exists then
IEProcess.Close(10000)
End if
'Open browser and navigate to the web-site
Set IExplore = TestedApps.iexplore
IExplore.Params.SimpleParams.CommandLineParameters = "http://www.google.ca/"
Call IExplore.Run(1, False, 5000)
'Find Web Page Object
PropNames = Array("objecttype", "url")
PropValues = Array("page", "http://www.google.ca/")
Set Page = Sys.Process("iexplore").FindChild(PropNames, PropValues, 1, True)
If Not Page.Exists then
Exit Sub
End if
'Find Web Link Object
PropNames = Array("tagName", "namePropStr")
PropValues = Array("A", "advanced_search*")
Set objLink = Page.FindChild(PropNames, PropValues, 10, True)
If Not objLink.Exists then
Exit Sub
End if
objLink.Click
'Re-identify Web Page
PropNames = Array("objecttype", "url")
PropValues = Array("page", "http://www.google.ca/advanced_search?hl=en")
Set Page = Page.Find(PropNames, PropValues, 1, True)
If Not Page.Exists then
Exit Sub
End if
'Get Web Form Object
PropNames = Array("objecttype", "outerText")
PropValues = Array("Form", "Find web pages*")
Set objForm = Page.FindChild(PropNames, PropValues, 5, True)
If Not objForm.Exists then
Exit Sub
End if
'Get Child Objects of specified type
PropNames = Array("tagName")
PropValues = Array("SELECT")
arrComboBox = objForm.FindAllChildren(PropNames, PropValues, 10, True)
'Retrieve object by index
Set objComboBox = arrComboBox(6)
objComboBox.ClickItem("20 results")

