- Release Notes
- 2021.10.3
- 2021.10.4
- 2021.10.5
- 2021.10.6
- 2021.10.7
- 2021.10.8
- 2021.10.9
- 2021.10.10
- Getting Started
- Introduction
- About Backward and Forward Compatibility
- The User Interface
- Keyboard Shortcuts
- Signing in to Your Account
- Configuring Studio Settings
- Project Templates
- Orchestration Process
- Background Process
- Robotic Enterprise Framework
- Transactional Process
- Trigger Based Attended Automation
- Creating a Basic Process
- Creating a Basic Library
- Tutorials
- Setup and Configuration
- Hardware and Software Requirements
- Install Studio
- Deployment guidelines
- Services Studio Connects To
- Common Installation Errors
- Modify or Uninstall Studio
- Activate Studio
- About Licensing
- Update Studio
- Command Line Parameters
- Supported Applications and Technologies
- Enabling Gmail for Email Activities
- Opting Out of Telemetry
- Automation Projects
- About Automation Projects
- About Publishing Automation Projects
- About Libraries
- Loading Web Services in Libraries
- Activities Generated from Web Services
- Managing activity packages
- Configuring Activity Project Settings
- Signing Packages
- Governance
- Importing Entities
- Modern Design Experience
- Linking a Project to an Idea in Automation Hub
- Dependencies
- About Dependencies
- Managing Dependencies
- Project Dependencies Mass Update
- Mass Update Command Line Parameters
- Missing or Invalid Activities
- Types of Workflows
- Sequences
- Flowcharts
- State Machines
- Global Exception Handler
- File Comparison
- About File Comparison
- Comparing Files
- Automation Best Practices
- Workflow Design
- UI Automation
- Project Organization
- Automation Lifecycle
- Source Control Integration
- About Version Control
- Managing Projects With GIT
- Managing Projects With TFS
- Managing Projects With SVN
- Workflow Diff
- Debugging
- About Debugging
- Test Activities
- Debugging Actions
- The Locals Panel
- The Call Stack Panel
- The Breakpoints Panel
- The Watch Panel
- The Immediate Panel
- Remote Debugging
- The Diagnostic Tool
- About The Diagnostic Tool
- Workflow Analyzer
- About Workflow Analyzer
- Naming Rules
- 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
- Design Best Practices
- 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
- Project Anatomy Rules
- ST-ANA-003 - Project Workflow Count
- ST-ANA-005 - Check Project.json Exists
- ST-ANA-006 - Main Workflow Exists
- ST-ANA-009 - File Activities Stats
- Maintainability and Readability Rules
- ST-MRD-002 - Activity Name Defaults
- ST-MRD-004 - Unreachable Activities
- ST-MRD-005 - Redundant Sequences
- ST-MRD-007 - Nested If Clauses
- ST-MRD-008 - Empty Sequence
- ST-MRD-009 - Deeply Nested Activities
- ST-MRD-011 - Write Line Usage
- ST-MRD-017 - Incomplete If
- Usage Rules
- 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
- Performance and Reusability Rules
- ST-PRR-004 - Hardcoded Delay Activity
- Reliability Rules
- ST-REL-006 - Infinite Loop
- Security Rules
- ST-SEC-007 - SecureString Argument Usage
- ST-SEC-008 - SecureString Variable Usage
- ST-SEC-009 - SecureString Misusage
- Variables
- Managing Variables
- The Variables Panel
- Types of Variables
- Text Variables
- Example of Using a Text Variable
- True or False Variables
- Example of Using a True or False Variable
- Number Variables
- Example of Using a Number Variable
- Array Variables
- Example of Using an Array Variable
- Date and Time Variables
- Example of Using a Date and Time Variable
- Data Table Variables
- Example of Using DataTable Variables
- UiPath Proprietary Variables
- Arguments
- Managing Arguments
- The Arguments Panel
- Using Arguments
- Imported Namespaces
- About Imported Namespaces
- Managing Namespaces
- Control Flow
- About Control Flow
- Control Flow Activities
- The Assign Activity
- The Delay Activity
- Example of Using the Delay Activity
- The Do While Activity
- Example of Using a Do While Activity
- The If Activity
- Example of Using an If Activity
- The Switch Activity
- Example of Using a Switch Activity
- The While Activity
- Example of Using a While Activity
- The For Each Activity
- Example of Using a For Each Activity
- The Break Activity
- Example of Using a Break Activity
- Object Repository
- About Object Repository
- Creating an Object Repository
- Reusing Objects and UI Libraries
- Logging
- Studio Logs
- Setup Logs
- OCR Diagnostic Logs
- Logging Levels
- Types of Logs
- Protecting Sensitive Information
- The ScreenScrapeJavaSupport Tool
- About the ScreenScrapeJavaSupport Tool
- Argument Descriptions for the ScreenScrapeJavaSupport Tool
- Studio testing
- Introduction
- Application Testing
- Execution Templates
- Testing project templates
- SAP Testing Project
- Test Cases
- Data-Driven Testing
- RPA Testing
- Test Case Templates
- Test Explorer
- Test Results
- Activity Coverage
- Mock Testing
- API Test Automation
- Extensions
- About extensions
- SetupExtensions Tool
- UiPath Remote Runtime
- Extension for Chrome
- Group Policies
- Troubleshooting
- Extension for Edge
- Group Policies
- Troubleshooting
- Extension for Firefox
- Troubleshooting
- Extension for Java
- Troubleshooting
- Extension for Silverlight
- Extension for Citrix
- Troubleshooting
- Extension for Microsoft Remote Desktop and Apps
- Troubleshooting
- Extension for VMware Horizon
- SAP Solution Manager Plugin
- Excel Add-in
- Troubleshooting
- About Troubleshooting
- Microsoft App-V Support and Limitations
- Internet Explorer X64 Troubleshooting
- Microsoft Office Issues
- Identifying UI Elements in PDF With Accessibility Options
- Identifying UI Elements After Windows Updates
- Solutions
- JxBrowser Applications Troubleshooting
- User Events Monitoring
- Citrix Troubleshooting

Studio User Guide
Sometimes the usual manual routine is not the optimal way for automation. Carefully explore the application’s behavior and UiPath integration/features before committing to a certain approach.
UI automation is best utilized when Robots and applications run on the same machine because UiPath can integrate directly with the technology behind the application to identify elements, trigger events and get data behind the scenes.
Input Methods
There are three methods UiPath uses for triggering a Click or a Type Into activity on an application. These are displayed as properties in all activities that deal with UI automation.
The SimulateType and SimulateClick Properties
If the SimulateType or SimulateClick properties are selected, Studio hooks into the application and triggers the event handler of an indicated UI element (button, text box). The outcome is always dependent of the target technology, such as a web browser or business application.
It is highly recommended to check the state of the target UI element prior to execution, when you enable the SimulateType or SimulateClick for the following activities:
The same recommendation should be considered for the applications below, because they use the SimulateType or SimulateClick properties by default and can not be changed:
The AlterIfDisabled Property
The property instructs the target activity whether or not to interact with disabled elements. Please note that this property is only taken into consideration if the SimulateType or SimulateClick are enabled. You can find the AlterIfDisabled property for the following activities:
The SendWindowMessages Property
If the SendWindowMessages property is selected, Studio posts the event details to the application message loop and the application’s window procedure dispatches it to the target UI element internally.
Studio signals system drivers with hardware events if none of the above option are selected and lets the operating system dispatch the details towards the target element.
These methods should be tried in the order presented, as the SimulateClick and SendWindowMessages properties are faster and also work in the background, but they depend mostly on the technology behind the application.
Hardware events work 100% as Studio performs actions just like a human operator, such as moving the mouse pointer and clicking at a particular location. However, in this case, the application being automated needs to be visible on the screen. This can be seen as a drawback since there is the risk that the user can interfere with the automation.
Selectors
Sometimes the automatically generated selectors propose volatile attribute values to identify elements and manual intervention is required to calibrate the selectors. A reliable selector should successfully identify the same element every time in all conditions, in development, test and production environments and no matter the usernames logged on to the applications.
Here are some tips on how to improve a selector in the or :
- Replace attributes with volatile values with attributes that look steady and meaningful.
- Replace variable parts of an attribute value with wildcards (*).
- If an attribute’s value is all wildcard (e.g.
name=’*’) then the attribute should be removed. - If editing attributes doesn’t help, try adding more intermediary containers.
-
Avoid using the
idxattribute unless its value is a very small number like 1 or 2.
In the selector above, we notice the page title has a reference to the time when the selector was recorded and also that some attributes have randomly looking IDs. Tweaking the attributes, we can come up with a better selector than UiPath recorder proposed.
Containers
Similar to file paths, selectors can be full or partial (relative). Full selectors start with a window or an HTML identifier and have all the necessary information to find an element on the whole desktop, while partial selectors work only inside an attach/container that specifies the top-level window where the elements belong:
- OpenBrowser
- OpenApplication
- AttachBrowser
- AttachWindow
Here is a bit more info on .
There are several advantages to using containers with partial selectors instead of full selectors:
- Visually groups activities that work on the same application.
- Is slightly faster, not seeking for the top window every time.
- Makes it easier to manage top-level selectors in case manual updates are necessary.
- Essential when working on two instances of the same application.
Image recognition is the last approach to automating applications if nothing else works to identify UI elements on the screen (like selectors or keyboard shortcuts). Because image matching requires elements to be fully visible on the screen and that all visible details are the same at runtime as during development, when resorting to image automation extra care should be taken to ensure the reliability of the process. Selecting more/less of an image than needed might lead to an image not found or a false-positive match.
Resolution Considerations
Image matching is sensitive to environment variations like desktop theme or screen resolution. When the application runs in Citrix, the resolution should be kept greater or equal than when recording the workflows. Otherwise, small image distortions can be compensated by slightly lowering the captured image Accuracy factor. Check how the application layout adjusts itself to different resolutions to ensure visual elements proximity, especially in the case of coordinate based techniques like relative click and relative scrape.
If the automation supports different resolutions, parallel recordings can be placed inside a PickBranch activity and the Robot uses either match.
OCR Engines
If OCR returns good results for the application, text automation is a good alternative to minimize the environment influence. The Google Tesseract engine works better for smaller areas, while Microsoft MODI for larger ones.
Using the MODI engine in loop automations can sometimes create memory leaks. This is why it is recommended that scraping done with MODI be invoked via a separate workflow, using the Isolated property.
Unexpected behavior is likely to occur when the application is not in the state the workflow assumes it to be. The first thing to watch for is the time the application takes to respond to the Robot interactions.
The DelayMS property enables you to wait a while for the application to respond. However, there are situations when an application’s state must be validated before proceeding with certain steps in a process. Measures may include using extra activities that wait for the desired application state before other interactions. Activities that might help include:
If an automation is intended to share the desktop with a human user, all UI interaction must be implemented in the background. This means that the automation has to work with UI element objects directly, thus allowing the application window to be hidden or minimized during the process.
- Use the SimulateType, SimulateClick, and SendWindowMessagesoptions for navigation and data entry via the Click and Type Into activities.
- Use the Set Text, Check, and Select Item activities for background data entry.
- The Get Text, Get Full Text, and WebScraping activities are the outputs that run in the background.
- Use the Element Exists activity to verify application state.