TestComplete - Run-time GUI recognition

Categories: GUI RecognitionSource codeWeb

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 FindChild method

Let’s start with the example.

 Dim IEProcess, IExplore
 Dim PropNames, PropValues
 Dim Page
 Dim objLink
 'Close browser window
 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, 4, True)
 If Not objLink.Exists then
 Exit Sub
 End if
 'Click on the link
 objLink.Click

Note highlighted lines: this is where object recognition properties are defined. As you see from lines ## 7,8, TestComplete supports not only GUI objects recognition, but recognition of any object in hierarchy, including processes.

The third parameter of FindChild method is depth, which is defined by position of the object in hierarchy. In our example, the full path string to the link from the root is:

Sys.Process(“iexplore”).Page(“http://www.google.ca/”).Form(“f”).Table(0).Cell(0, 2).Link(0)

Which means, counting from the Sys object, depth of the link is 6. Counting from the Page object, the depth is 4.

Note, that we specify max depth to search within. An object could be found “higher” in the hierarchy; but if it’s “lower” than the depth specified, then search won’t be successful.

If an object has unique identification properties in wide context, middle step may be omitted, as in the example below.

 Dim IEProcess, IExplore
 Dim PropNames, PropValues
 Dim objLink
 'Close browser window
 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 Link Object
 PropNames = Array("tagName", "namePropStr")
 PropValues = Array("A", "advanced_search*")
 Set objLink = Sys.Process("iexplore").FindChild(PropNames, PropValues, 10, True)
 If Not objLink.Exists then
 Exit Sub
 End if
 objLink.Click

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.