- Release Notes
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- ST-NMG-001 - Variables Naming Convention
- ST-NMG-002 - Arguments Naming Convention
- ST-NMG-004 - Display Name Duplication
- ST-NMG-005 - Variable Overrides Variable
- ST-NMG-006 - Variable Overrides Argument
- ST-NMG-008 - Variable Length Exceeded
- ST-NMG-009 - Prefix Datatable Variables
- ST-NMG-011 - Prefix Datatable Arguments
- ST-NMG-012 - Argument Default Values
- ST-NMG-016 - Argument Length Exceeded
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- ST-DBP-026 - Delay Activity Usage
- ST-DBP-027 - Persistence Best Practice
- ST-DBP-028 - Arguments Serialization Prerequisite
- ST-USG-005 - Hardcoded Activity Arguments
- ST-USG-009 - Unused Variables
- ST-USG-010 - Unused Dependencies
- ST-USG-014 - Package Restrictions
- ST-USG-020 - Minimum Log Messages
- ST-USG-024 - Unused Saved for Later
- ST-USG-025 - Saved Value Misuse
- ST-USG-026 - Activity Restrictions
- ST-USG-027 - Required Packages
- ST-USG-028 - Restrict Invoke File Templates
- ST-USG-032 - Required Tags
- ST-USG-034 - Automation Hub URL
- Variables
- Arguments
- Imported Namespaces
- Recording
- UI Elements
- Control Flow
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Automating Citrix Technologies
- RDP Automation
- Salesforce Automation
- SAP Automation
- VMware Horizon Automation
- Logging
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- Test Suite - Studio
- Extensions
- Troubleshooting
- About troubleshooting
- Microsoft App-V support and limitations
- Internet Explorer X64 troubleshooting
- Microsoft Office issues
- Identifying UI elements in PDF with Accessibility options
- Repairing Active Accessibility support
- Automating Applications Running Under a Different Windows User
- Validation of large Windows-legacy projects takes longer than expected
Fuzzy Search
A selector contains a top-level tag which references the target window or browser tab. It holds attributes like title, process name, URL, window name, and others, which help you properly identify the elements you want to use in your automation projects.
Often enough, top-level tag values are subject to dynamic changes because the target application rewrites them based on your actions. For example, a web page title can change during the automation process, which makes corresponding selector invalid.
In this regard, the selector’s fuzzy search capabilities enable you locate strings based on a pattern, rather than on an exact match to your input. This results in a more flexible method of identifying elements and validates selectors according to multiple attributes, even if some are prone to change during the automation process.
To use the fuzzy search capabilities, a couple of matching options need to be included in the top-level tag of the target selector, as follows:
Option | Description |
---|---|
| Allows you to specify the target
search tag, determined by the
<tag_name> value.
|
| Determines the matching threshold for
the target <tag_name> . It
supports a numerical value from 0 to 1, as
follows:
|
Selector type | Support |
---|---|
<wnd> | |
<html> | |
<webctrl> | |
<java> | |
<ctrl> | |
<uia> | |
<sap> | |
<rdp> | |
<silverlight> | |
Tags which identify a process name.
Example: <html
app="firefox.exe"> .
|
check:text="example"
in a fuzzy selector checks
if the target element contains the specified text.
check:text="Options"
to a fuzzy
selector checks if the target element contains the
Options
text.
Fuzzy search can be used to identify nearly any type of attribute in the top-level tags of selectors. In the following examples, we aim to build valid selectors with attributes which is incorrectly spelled:
A. Using a high fuzziness level
W3Schools Online Web Tutorials
<title>
attribute. For the purpose of our example,
the attribute is incorrectly spelled, thus making the selector
invalid.
<html app='firefox.exe' title='WEScho0ls Online Web Tutorials' />
<html app='firefox.exe' title='WEScho0ls Online Web Tutorials' />
<html>
tag.
Since the attribute of interest is <title>
, the
<tag_name>
of our fuzzy search expression needs
to have the matching:title=fuzzy
form. The mistake in our
<title>
attribute is small, so we can use a
fuzziness level closer to 1. The following selector is generated, which
returns the correct <title>
attribute, which, in this
case is W3Schools Online Web Tutorials
:
<html app='firefox.exe' title='WEScho0ls Online Web Tutorials'
matching:title='fuzzy' fuzzylevel:title='0.8' />
<html app='firefox.exe' title='WEScho0ls Online Web Tutorials'
matching:title='fuzzy' fuzzylevel:title='0.8' />
B. Using a low fuzziness level
<aaname>
attribute. The target attribute is Colorpicker
, but in our
example it is incorrectly spelled Clorker
. Needless to say
that, with an incorrectly spelled attribute, our selector is invalid, and
looks something like
this:
<html title='W3Schools Online Web Tutorials' />
<webctrl aaname='Clorker' parentid='main' tag='IMG' />
<html title='W3Schools Online Web Tutorials' />
<webctrl aaname='Clorker' parentid='main' tag='IMG' />
<webctrl>
tag. In this case,
our target is <aaname>
. Since there are more mistakes
in the spelling of our target, we reduce the fuzziness level closer to 0, so
that there are greater chances of accurate detection. The following selector
is generated, which returns the correct <aaname>
attribute, which, in this case is Colorpicker
:
<html title='W3Schools Online Web Tutorials' />
<webctrl aaname='Colorker' parentid='main' tag='IMG' matching:aaname='fuzzy' fuzzylevel:aaname='0.4' />
<html title='W3Schools Online Web Tutorials' />
<webctrl aaname='Colorker' parentid='main' tag='IMG' matching:aaname='fuzzy' fuzzylevel:aaname='0.4' />