- Overview
- UI Automation
- Applications and technologies automated with UI Automation
- Project compatibility
- UI-ANA-016 - Pull Open Browser URL
- UI-ANA-017 - ContinueOnError True
- UI-ANA-018 - List OCR/Image Activities
- UI-DBP-006 - Container Usage
- UI-DBP-013 - Excel Automation Misuse
- UI-DBP-030 - Forbidden Variables Usage In Selectors
- UI-PRR-001 - Simulate Click
- UI-PRR-002 - Simulate Type
- UI-PRR-003 - Open Application Misuse
- UI-PRR-004 - Hardcoded Delays
- UI-REL-001 - Large Idx in Selectors
- UI-SEC-004 - Selector Email Data
- UI-SEC-010 - App/Url Restrictions
- UI-USG-011 - Non Allowed Attributes
- UX-SEC-010 - App/Url Restrictions
- UX-DBP-029 - Insecure Password Use
- UI-PST-001 - Audit Log Level in Project Settings
- UiPath Browser Migration Tool
- Clipping region
- Computer Vision Recorder
- Activate
- Anchor Base
- Attach Browser
- Attach Window
- Block User Input
- Callout
- Check
- Click
- Click Image
- Click Image Trigger
- Click OCR Text
- Click Text
- Click Trigger
- Close Application
- Close Tab
- Close Window
- Context Aware Anchor
- Copy Selected Text
- Element Attribute Change Trigger
- Element Exists
- Element Scope
- Element State Change Trigger
- Export UI Tree
- Extract Structured Data
- Find Children
- Find Element
- Find Image
- Find Image Matches
- Find OCR Text Position
- Find Relative Element
- Find Text Position
- Get Active Window
- Get Ancestor
- Get Attribute
- Get Event Info
- Get From Clipboard
- Get Full Text
- Get OCR Text
- Get Password
- Get Position
- Get Source Element
- Get Text
- Get Visible Text
- Go Back
- Go Forward
- Go Home
- Google Cloud Vision OCR
- Hide Window
- Highlight
- Hotkey Trigger
- Hover
- Hover Image
- Hover OCR Text
- Hover Text
- Image Exists
- Indicate On Screen
- Inject .NET Code
- Inject Js Script
- Invoke ActiveX Method
- Key Press Trigger
- Load Image
- Maximize Window
- Microsoft Azure Computer Vision OCR
- Microsoft OCR
- Microsoft Project Oxford Online OCR
- Minimize Window
- Monitor Events
- Mouse Trigger
- Move Window
- Navigate To
- OCR Text Exists
- On Element Appear
- On Element Vanish
- On Image Appear
- On Image Vanish
- Open Application
- Open Browser
- Refresh Browser
- Replay User Event
- Restore Window
- Save Image
- Select Item
- Select Multiple Items
- Send Hotkey
- Set Clipping Region
- Set Focus
- Set Text
- Set To Clipboard
- Set Web Attribute
- Show Window
- Start Process
- System Trigger
- Take Screenshot
- Tesseract OCR
- Text Exists
- Tooltip
- Type Into
- Type Secure Text
- Use Foreground
- Wait Attribute
- Wait Element Vanish
- Wait Image Vanish
- Application Event Trigger
- Check/Uncheck
- Check App State
- Check Element
- Click
- Click Event Trigger
- Drag and Drop
- Extract Table Data
- For Each UI Element
- Get Attribute
- Get Browser Data
- Get Text
- Get URL
- Go to URL
- Highlight
- Hover
- Inject Js Script
- Keyboard Shortcuts
- Keypress Event Trigger
- Mouse Scroll
- Navigate Browser
- Select Item
- Set Browser Data
- Set Runtime Browser
- Set Text
- Take Screenshot
- Type Into
- Use Application/Browser
- Perform browser search and retrieve results using UI Automation APIs
- Web Browsing
- Find Images
- Click Images
- Trigger and Monitor Events
- Create and Override Files
- HTML Pages: Extract and Manipulate Information
- Window Manipulation
- Automated List Selection
- Find and Manipulate Window Elements
- Manage Text Automation
- Load and Process Images
- Manage Mouse Activated Actions
- Automate Application Runtime
- Automated Run of a Local Application
- Browser Navigation
- Web Automation
- Trigger Scope Example
- Enable UI Automation support in DevExpress
- Computer Vision Local Server
- Mobile Automation
- Release notes
- Project compatibility
- Get Log Types
- Get Logs
- Get Page Source
- Get Device Orientation
- Get Session Identifier
- Install App
- Manage Current App
- Manage Other App
- Open DeepLink
- Open URL
- Mobile Device Connection
- Directional Swipe
- Draw Pattern
- Positional Swipe
- Press Hardware Button
- Set Device Orientation
- Take Screenshot
- Take Screenshot Part
- Element Exists
- Execute Command
- Get Attribute
- Get Selected Item
- Get Text
- Set Selected Item
- Set Text
- Swipe
- Tap
- Type Text
- Terminal
UI Automation Activities
Table Extraction
DataTable
object that can then be further used in your automation processes.
This process can be done by using the Table Extraction Recorder in Studio, which can be accessed from the Ribbon if the UI Automation v21.4 or above pack is installed in your current project, and you have selected the Modern Experience.
The same wizard is also used when using a Extract Table Data activity in your workflow.
If you have the Modern Experience selected in your project, and the UI Automation activity package installed, you can find the Table Extraction recorder on the Ribbon in Studio.
Clicking the Table Extraction button in the Ribbon opens up the Table Extraction wizard.
This wizard enables you to configure the entire suite of features that the Extract Table Data activity offers, in a very simple manner.
To switch between the available UI frameworks (Default, UIAutomation, or Active Accessibility), you can select an option from the drop-down menu or hit F4.
Also, the Information section guides you through all the steps you need to take to successfully extract any structured data. The section can be collapsed to reveal more information about the step you're currently on.
To begin the process of extracting data, simply click the Add Data button. This starts the process of indicating a series of similar elements that can be used to identify the table you want to create. This starts the Indicate process, which highlights all the detected elements of the application you are currently working with. By selecting the button, you can extract URLs and image sources of the extracted data, if they are present. These are added as a new column to your final table.
As you can see above, after clicking a column header, the wizard prompts you with a message, asking whether you want to extract all of the available columns, which are automatically identified. Selecting Yes scrapes the entire table.
If you select an element that is closer (lowest common ancestor) to only one of the elements from the first column, it is automatically considered to be the first element of a new column.
If the table spans multiple pages, you can simply click Next Button and select the next page navigation button or link.
Each column can be individually edited or deleted, enabling you to customize your final table however you see fit.
Once you have selected all the data you want, simply clicking the Save and return to Studio button automatically closes the wizard and saves everything you have done in your workflow.
Editing Extract Data
You can resume editing an already scraped table by using the Edit extract data option in the contextual menu in the body of the Extract Table Data activity. Using this option reopens the wizard with all of the configurations performed earlier and enables you to pick up where you left off.
Editing Columns
Clicking the Cogwheel icon next to the column you want to edit opens up the Column Settings window.
Here, you can edit the Column Name. This can be done by simply using the text box and specifying the name you want for the column in the final table.
The Parse data as drop-down menu enables you to select between the three main types of data you can use for the columns, Text, Number, and Date & Time.
The Sample text box displays a sample of a value in the column being parsed as the data type you chose in the Parse data as drop-down.
Text
The Sort drop-down menu specifies whether you want to sort the data in the column or not. By default, None is selected, meaning the data is not sorted in any way. If you want to sort the data in the column alphabetically, you can do so by selecting Ascending or Descending, depending on the method you prefer.
Number
Selecting Number in the Parse data as drop-down displays other, number-specific options.
The Sort drop-down menu specifies whether you want to sort the data in the column or not. By default, None is selected, meaning the data is not sorted in any way. If you want to sort the data in the column alphanumerically, you can do so by selecting Ascending or Descending, depending on the method you prefer.
.
.
,
.
$
) are removed.
Date & Time
Selecting Date & Time in the Parse data as drop-down displays other options, specific to date and time formats.
If the column you are editing does not match the format that is specified, the Column Settings window lets you know in the Sample section.
The Sort drop-down menu specifies whether you want to sort the data in the column or not. By default, None is selected, meaning the data is not sorted in any way. If you want to sort the data in the column by date, you can do so by selecting Ascending or Descending, depending on the method you prefer.
The Data parse format drop-down enables you to select from a multitude of date and time formats that are supported.
The Settings section lets you choose if you want to limit the extraction of elements in the table. By default, this option is set to No limit, which does not limit the extraction in any way, scraping the entire visible table.
The Max rows option limits the scraping according to the number of rows that is mentioned in the field to the right. By default, this is set to 1000 rows.
The Max pages option limits the scraping according to the number of pages that is mentioned in the field to the right. By default, this is set to 100 pages.
The Preview section specifies how many columns and rows are identified for the table you have indicated. Also, by clicking the eye button, you can see a preview of the extracted table.
Preview is disabled when editing in offline mode.
tag
, idx
, and text
.
Example:
<extract>
<!—columns data identified by a path >
<column exact='1' name=’Description’ attr='text'>
<webctrl tag='div' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='span' idx='1' />
</column>
<column exact='1' name=’Currency’ attr='text'>
<webctrl tag='div' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='span' idx='2' />
</column>
</extract>
<extract>
<!—columns data identified by a path >
<column exact='1' name=’Description’ attr='text'>
<webctrl tag='div' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='span' idx='1' />
</column>
<column exact='1' name=’Currency’ attr='text'>
<webctrl tag='div' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='div' idx='1' />
<webctrl tag='span' idx='2' />
</column>
</extract>
tag
, idx
, and text
attributes are not enough for identifying the sample data indicated by the user, a CSS-selector is generated instead of the
path. This selector uses the common class of the sample elements.
Example:
<extract>
<!—column data identified by a path >
<column exact='1' name='Description' attr='text'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='h3' idx='1' />
</column>
<!—column data identified by a css-selector >
<column css-selector='.currency-value' name='Currency' attr='text' />
</extract>
<extract>
<!—column data identified by a path >
<column exact='1' name='Description' attr='text'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='h3' idx='1' />
</column>
<!—column data identified by a css-selector >
<column css-selector='.currency-value' name='Currency' attr='text' />
</extract>
tag
and index
attributes are used to identify the column data.
For the Currency column, the elements are identified via the CSS-selector which contains the common class of the samples.
Optionally, if available, a CSS-selector can be used for the Description as well:
<extract>
<!—columns data identified by css-selectors >
<column css-selector='.product-title ' name='Description' attr='text' />
<column css-selector='.currency-value' name='Currency' attr='text' />
</extract>
<extract>
<!—columns data identified by css-selectors >
<column css-selector='.product-title ' name='Description' attr='text' />
<column css-selector='.currency-value' name='Currency' attr='text' />
</extract>
Row definition uses the same identification methods as the column and it is used to extract correlated data. A row contains an element from each column.
Example:
<extract>
<! -- row definition - ->
<row exact='1'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
</row>
<column exact='1' name='Description' attr='text'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='h3' idx='1' />
</column>
<column css-selector='.currency-value' name='Column' attr='text' />
</extract>
<extract>
<! -- row definition - ->
<row exact='1'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
</row>
<column exact='1' name='Description' attr='text'>
<webctrl tag='li' />
<webctrl tag='div' idx='1' />
<webctrl tag='a' idx='1' />
<webctrl tag='div' idx='2' />
<webctrl tag='div' idx='1' />
<webctrl tag='h3' idx='1' />
</column>
<column css-selector='.currency-value' name='Column' attr='text' />
</extract>
This property contains an XML definition of the column settings, as they were defined in the scraping wizard. Column properties like Name or Format can be changed directly in this XML definition and will be used at runtime when building the output data table.
Example:
<Table xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' Type='Structured'>
<Column xsi:type='DataColumn' ReferenceName='Column0' Name=’Description'>
<Format xsi:type='TextColumnFormat' />
</Column>
<Column xsi:type='DataColumn' ReferenceName='Column2' Name=’Currency'>
<Format xsi:type='TextColumnFormat' />
</Column>
</Table>
<Table xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' Type='Structured'>
<Column xsi:type='DataColumn' ReferenceName='Column0' Name=’Description'>
<Format xsi:type='TextColumnFormat' />
</Column>
<Column xsi:type='DataColumn' ReferenceName='Column2' Name=’Currency'>
<Format xsi:type='TextColumnFormat' />
</Column>
</Table>