studio
latest
false
- Getting Started
- Setup and Configuration
- Automation Projects
- Dependencies
- Types of Workflows
- Control Flow
- File Comparison
- Automation Best Practices
- Source Control Integration
- Debugging
- Logging
- 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-NMG-017 - Class name matches default namespace
- ST-DBP-002 - High Arguments Count
- ST-DBP-003 - Empty Catch Block
- ST-DBP-007 - Multiple Flowchart Layers
- ST-DPB-010 - Multiple instances of [Workflow] or [Test Case]
- ST-DBP-020 - Undefined Output Properties
- ST-DBP-021 - Hardcoded Timeout
- ST-DBP-023 - Empty Workflow
- ST-DBP-024 - Persistence Activity Check
- ST-DBP-025 - Variables Serialization Prerequisite
- 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-017 - Invalid parameter modifier
- 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
- Coded automations
- Introduction
- Registering custom services
- Before and After contexts
- Generating code
- Generating coded test case from manual test cases
- Troubleshooting
- Trigger-based Attended Automation
- Recording
- UI Elements
- Selectors
- Object Repository
- Data Scraping
- Image and Text Automation
- Citrix Technologies Automation
- RDP Automation
- VMware Horizon Automation
- Salesforce Automation
- SAP Automation
- macOS UI Automation
- The ScreenScrapeJavaSupport Tool
- The WebDriver Protocol
- Extensions
- About extensions
- SetupExtensions tool
- UiPathRemoteRuntime.exe is not running in the remote session
- UiPath Remote Runtime blocks Citrix session from being closed
- UiPath Remote Runtime causes memory leak
- UiPath.UIAutomation.Activities package and UiPath Remote Runtime versions mismatch
- The required UiPath extension is not installed on the remote machine
- Screen resolution settings
- Group Policies
- Cannot communicate with the browser
- Chrome extension is removed automatically
- The extension may have been corrupted
- Check if the extension for Chrome is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and Incognito mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Chrome
- Chrome Extension on Mac
- Group Policies
- Cannot communicate with the browser
- Edge extension is removed automatically
- The extension may have been corrupted
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- List of extensions for Edge
- Extension for Safari
- Extension for VMware Horizon
- Extension for Amazon WorkSpaces
- SAP Solution Manager plugin
- Excel Add-in
- Studio testing
- Troubleshooting
- About troubleshooting
- Assembly compilation errors
- 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
- Validation of large Windows-legacy projects takes longer than expected

Studio User Guide
Last updated Sep 25, 2025
Apply for a loan with UiBank
linkThis tutorial shows how to create a Coded Test Case
(applyForLoan.cs) to verify whether the loan rate calculated by the UiBank
application matches your own calculation. The test case references a Coded Source File
(LoanApplication.cs), containing a class with get and set methods used for
generating test data.
Prerequisites
- UiAutomation.Activities 23.10 or higher.
- Testing.Activities 23.10 or higher.
- System.Activities 23.10 or higher.
- UiBank.
Create a code source file
link- Create a class called
LoanApplication
. - Create a public object for every
field in the Loan Application form, and use the get and set
methods for each of them.
Later, assign values to the objects using either pre-defined values or coded automation APIs such as RandomString or RandomNumber.
public class LoanApplication { public string email {get;set;} public int income {get;set;} public int loanAmount {get;set;} public int loanTerm {get;set;} public int age {get;set;} public int expectedLoanRate {get;set;} }
public class LoanApplication { public string email {get;set;} public int income {get;set;} public int loanAmount {get;set;} public int loanTerm {get;set;} public int age {get;set;} public int expectedLoanRate {get;set;} }
Create the coded test case
link- Create a new Coded test case (File group > New > Coded test case) and name it applyForLoan.
-
Reference the Coded source file that you created previously in your Coded Test
Case to generate data.
private LoanApplication myLoanApplication;
private LoanApplication myLoanApplication; -
Inside the public class of the Coded Test Case (applyForLoan), but
outside the Execute method, create another method called
InitializeTestData. Here you set the values for each field inside the
Loan Application form.
public void InitializeTestData() { myLoanApplication = new LoanApplication(); myLoanApplication.age = 42; myLoanApplication.email = "[email protected]"; myLoanApplication.income = 30000; myLoanApplication.loanAmount = decimal.ToInt32(testing.RandomNumber(20000,30000,0)); myLoanApplication.loanTerm = 5; myLoanApplication.expectedLoanRate = 8; }
public void InitializeTestData() { myLoanApplication = new LoanApplication(); myLoanApplication.age = 42; myLoanApplication.email = "[email protected]"; myLoanApplication.income = 30000; myLoanApplication.loanAmount = decimal.ToInt32(testing.RandomNumber(20000,30000,0)); myLoanApplication.loanTerm = 5; myLoanApplication.expectedLoanRate = 8; }
-
In the Arrange section, initialize the test data for your test case.
InitializeTestData();
InitializeTestData(); -
Capture all the UI elements that you want to use in your coded test case inside
the Object Repository.
-
Access all the UI elements in the application and start automating! Open the
UiBank application and choose to apply for a loan.
var homeScreen = uiAutomation.Open(ObjectRepository.Descriptors.UiBank.HomeScreen); homeScreen.Click(ObjectRepository.Descriptors.UiBank.HomeScreen.Products); homeScreen.Click(ObjectRepository.Descriptors.UiBank.HomeScreen.Loans); var applyForLoanScreen = uiAutomation.Attach(ObjectRepository.Descriptors.UiBank.ApplyForLoan); applyForLoanScreen.Click(ObjectRepository.Descriptors.UiBank.ApplyForLoan.ApplyForALoan);
var homeScreen = uiAutomation.Open(ObjectRepository.Descriptors.UiBank.HomeScreen); homeScreen.Click(ObjectRepository.Descriptors.UiBank.HomeScreen.Products); homeScreen.Click(ObjectRepository.Descriptors.UiBank.HomeScreen.Loans); var applyForLoanScreen = uiAutomation.Attach(ObjectRepository.Descriptors.UiBank.ApplyForLoan); applyForLoanScreen.Click(ObjectRepository.Descriptors.UiBank.ApplyForLoan.ApplyForALoan);
-
Fill in the Loan Application form with the test data that you previously
initialized.
var loanApplicationForm = uiAutomation.Open(ObjectRepository.Descriptors.UiBank.LoanApplication); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.EmailAddress, myLoanApplication.email); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.LoanAmountRequested, myLoanApplication.loanAmount.ToString()); loanApplicationForm.SelectItem(ObjectRepository.Descriptors.UiBank.LoanApplication.LoanTerm, "5"); Log(loanApplicationForm.ToString()); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.CurrentYearlyIncome,"30000"); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.Age, myLoanApplication.age.ToString());
var loanApplicationForm = uiAutomation.Open(ObjectRepository.Descriptors.UiBank.LoanApplication); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.EmailAddress, myLoanApplication.email); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.LoanAmountRequested, myLoanApplication.loanAmount.ToString()); loanApplicationForm.SelectItem(ObjectRepository.Descriptors.UiBank.LoanApplication.LoanTerm, "5"); Log(loanApplicationForm.ToString()); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.CurrentYearlyIncome,"30000"); loanApplicationForm.TypeInto(ObjectRepository.Descriptors.UiBank.LoanApplication.Age, myLoanApplication.age.ToString());
-
In the Act section add the action of selecting the Submit
button.
loanApplicationForm.Click(ObjectRepository.Descriptors.UiBank.LoanApplication.SubmitLoanApplication);
loanApplicationForm.Click(ObjectRepository.Descriptors.UiBank.LoanApplication.SubmitLoanApplication); -
In the Assert section, retrieve the loan rate that the application
calculated and verify if it matches the loan rate that you estimated in the
InitializeTestData method.
var loanResultsScreen = uiAutomation.Attach(ObjectRepository.Descriptors.UiBank.LoanResults); var actualLoanRate = loanResultsScreen.GetText(ObjectRepository.Descriptors.UiBank.LoanResults.LoanRate); testing.VerifyExpression(actualLoanRate == myLoanApplication.expectedLoanRate.ToString(),"The expected and actual loan rates are equal.",true, "Verify Expression", true, false);
var loanResultsScreen = uiAutomation.Attach(ObjectRepository.Descriptors.UiBank.LoanResults); var actualLoanRate = loanResultsScreen.GetText(ObjectRepository.Descriptors.UiBank.LoanResults.LoanRate); testing.VerifyExpression(actualLoanRate == myLoanApplication.expectedLoanRate.ToString(),"The expected and actual loan rates are equal.",true, "Verify Expression", true, false);
Sample project
linkTo follow the steps and try out the tutorial yourself, see the following sample project: Apply for a loan with UiBank.