UiPath Studio Help Guide

Complete Interface Mapping, Error Resolution & Workflow Blueprints

1. Where to Find What (Studio Interface Mapping)

Activities Panel
  • Location: Docked on the extreme left side of the screen.
  • Purpose: The searchable library of every action the robot can perform.
  • Usage: Search for the desired action (e.g., "Click", "Assign") and drag-and-drop it directly into the central Designer canvas.
  • Packages: If an activity is missing (like Excel), click "Manage Packages" in the ribbon to install the required dependency.
Properties Panel
  • Location: Docked on the extreme right side of the screen.
  • Purpose: Controls the detailed, specific settings for the currently selected activity.
  • Critical Configurations: Contains fields like TimeoutMS (how long to wait), Selector (the XML code to find elements), and variables assigned to Output results.
Variables & Arguments Pane
  • Location: A collapsible tab at the bottom-left of the central Designer panel.
  • Purpose: Used to declare new variables, define their exact Data Types (String, Int32, DataTable), and set their Scope (where they can be used).
  • Pro Tip (Shortcut): You can rapidly create variables directly inside the Properties panel by placing your cursor in an input field and pressing Ctrl + K.
Output Panel
  • Location: A collapsible tab at the bottom-right of the screen.
  • Purpose: The primary console for debugging and monitoring the bot's live execution.
  • Usage: Displays all system errors, warnings, and custom text generated by Write Line or Log Message activities. It is the first place to check when a bot crashes.

2. How to Solve Notorious Problems

"Selector Not Found" Error

Cause: The application window title, ID, or structure changed dynamically since you recorded the step.

  • Solution 1 (Wildcards): Open the selector in UiExplorer. Replace dynamically changing numbers/names with an asterisk * (replaces multiple characters). Example: Change title='Invoice_1234.pdf' to title='Invoice_*.pdf'.
  • Solution 2 (Anchor Base): If the text box ID changes constantly, use an Anchor Base activity. Tell the bot to find a static label (e.g., "Name:") and interact relative to it.
  • Solution 3 (Repair): Click the "Repair" button inside the activity and re-indicate the element on the screen to generate a fresh XML selector.
"Object Reference Not Set..." Error

Cause: The bot is trying to use a variable, array, or list that is entirely empty (Null) or was never initialized.

  • Solution 1 (Initialize Collections): If using a List, you must assign it an initial empty state before adding data. Use an Assign activity: myList = New List(of String).
  • Solution 2 (Check Scrape Results): If this happens after a "Get Text" or "Find Element" activity, the bot likely failed to find the data. Add an If activity to check if the variable Is Nothing before trying to use it.
  • Solution 3 (Scope Check): Check the Variables panel. Your variable might be scoped to an inner sequence and disappears when the bot moves to the next step.
Bot Clicks Too Early & Fails

Cause: The bot executes its code sequence faster than the target application or webpage can render the UI.

  • Solution 1 (Wait Activities): Do not rely on static Delay activities. Instead, use Wait Element Appear to pause the bot until the exact button is fully visible.
  • Solution 2 (Wait Vanish): Use Wait Element Vanish to force the bot to wait for a "Loading..." spinner or progress bar to close before proceeding.
  • Solution 3 (TimeoutMS): In the Properties panel of the failing activity, increase the TimeoutMS value from the default 30000 (30 seconds) to 60000 (60 seconds).
Unexpected Pop-ups Crash Bot

Cause: A random system update, ad, or promotional pop-up blocked the UI element the bot was trying to interact with.

  • Solution (Try Catch): Place your core automation sequence inside a Try Catch activity. Put the main code in the Try block.
  • If a pop-up blocks execution, the bot safely diverts to the Catch block instead of crashing.
  • Inside the Catch block, add a Click activity designed to close the pop-up, and then log the exception.

3. Common Exam Problem Blueprints

SMTP Email Automation

Goal: Build a program to send an email using SMTP.

  1. Use an Assign to store the sender password securely in a SecureString variable.
  2. Drag the Send SMTP Mail Message activity into the workflow.
  3. In properties, configure the Server setup: Port (e.g., 587 or 465) and Server address (e.g., "smtp.gmail.com").
  4. Input Logon credentials: Email Address and the SecureString Password variable.
  5. Configure the Email details: "To" address, "Subject" string, and "Body" string.
  6. (Optional) Use the "Attach Files" property to link an array of file paths to be sent.
Array Iteration (Find Highest)

Goal: Find the highest number in SalesArray.

  1. Create an Int32 variable maxNum. Use Assign to set it to the first item: maxNum = SalesArray(0).
  2. Drag a For Each activity. Set input to SalesArray, TypeArgument to Int32.
  3. Inside the loop, drag an If activity.
  4. Set the If condition: item > maxNum
  5. In the Then branch, use an Assign to update the highest number: maxNum = item.
  6. Outside the loop, use a Write Line to print maxNum.ToString.
Switch Case Categorization

Goal: Sort students into Houses based on ID number.

  1. Use Assign to extract the last digit of the ID into a String variable idLast.
  2. Drag a Switch activity. Set TypeArgument to String, Expression to idLast.
  3. Add Case "1" -> Add a Message Box: "Red House".
  4. Add Case "2" -> Add a Message Box: "Blue House".
  5. Add Case "3" -> Add a Message Box: "Green House".
  6. In the built-in Default section -> Add a Message Box: "Guest House".
Math Logic (Divisible Checker)

Goal: Check if an input number is divisible by 2.

  1. Drag an Input Dialog to prompt the user. Save the result to an Int32 variable named num.
  2. Drag an If Activity below it.
  3. Set the mathematical condition using modulo: num mod 2 = 0
  4. Inside the Then block, place a Message Box stating "The number is Even/Divisible".
  5. Inside the Else block, place a Message Box stating "The number is Odd/Not Divisible".