About Non-Greedy Search
The Non-Greedy search makes it possible to identify the target element from a pool of similar applications, matching the attributes you specify. It needs to be included in the top-level tag of a selector.
How Non-Greedy Search Works
Introducing Non-Greedy search in your selectors instructs it to search through all the active windows or browser instances which match the top-level tags of your selector, and not just the window instances in focus. Non-Greedy search makes use of the idx()
attribute, which needs to be included in the top-level tag, as follows:
Option | Description |
---|---|
<idx='*'> | Searches through all active window instances for the element matching the top-level tag attributes. Please note that the <idx='1'> option only searches through window instances in focus. |
Currently, Non-Greedy search is supported for the following selector types:
Selector Type | Support |
---|---|
<wnd> | |
<html> | |
<webctrl> | |
<java> | |
<ctrl> | |
<sap> | |
<silverlight> | |
Selectors inside the following containers: Open Application Open Browsers Attach Window Attach Browser | |
Universal Windows Platform (UWP) applications |
Example of Using Non-Greedy Search
For the purpose of the example, let's assume that we want to build an automation process that interacts with the Windows 10 Calculator app. However, there are two active instances, a Standard Calculator and a Programmer Calculator. We only need to interact with the Standard Calculator, so we introduce the idx='*'
option in the top-level tag, in our case <wnd>
. The following selector is generated, which returns the Calculator instance we are looking for:
<wnd app='applicationframehost.exe' appid='Microsoft.WindowsCalculator_8wekyb3d8bbwe!App'
title='Calculator' idx='*' />
<uia cls='LandmarkTarget' />
<uia automationid='ProgrammerOperators' cls='NamedContainerAutomationPeer' name='Radix selection' />
<uia automationid='hexButton' cls='RadioButton' name='HexaDecimal 0 ' />
Updated 2 years ago