UiPath Studio 자주 쓰는 액티비티 및 VB.NET 메서드 정리

FURVEN·2024년 3월 11일

RPA

목록 보기
2/7
post-thumbnail

기준: UiPath Studio 최신 문서 기준. Studio 2024.10 이후에는 Modern Design Experience가 기본/유일한 디자인 경험이며, Classic 액티비티는 Activities 패널의 Classic 카테고리/필터에서 계속 사용할 수 있다. 따라서 신규 개발은 Modern 기준으로 잡고, 기존 소스 유지보수나 특정 레거시 기능이 필요할 때 Classic을 병행하는 방식이 현실적이다.
액티비티 이름과 속성은 Studio 버전, 프로젝트 타입, 패키지 버전에 따라 조금씩 달라질 수 있다.


1. 먼저 보는 선택 기준

상황권장 방식설명
신규 UI 자동화Modern UI AutomationUse Application/Browser 중심으로 구성. Modern UI Automation은 strict selector, fuzzy selector, Computer Vision, image, native text 등을 조합해 UI 요소를 식별한다.
기존 Classic 프로젝트 유지보수Classic UI Automation기존 Open Browser, Attach Browser, Element Exists 기반 로직 유지 시 사용.
신규 Excel 자동화Modern ExcelExcel Process ScopeUse Excel File 구조 권장. Excel 프로세스 관리와 파일 범위를 명확히 분리하기 좋다.
Excel 미설치 환경에서 단순 파일 읽기/쓰기Workbook ActivitiesWorkbook 액티비티는 Microsoft Excel이 설치되어 있지 않아도 실행 가능하며, 파일 기반 읽기/쓰기에 적합하다.
Orchestrator 자산/자격증명 사용Get Asset / Get Credential계정, URL, 환경값 등은 코드에 하드코딩하지 않고 Orchestrator 자산으로 관리한다.

2. Modern UI Automation 액티비티

Modern UI 자동화는 보통 Use Application/Browser 안에 필요한 액티비티를 배치하는 방식으로 구성한다. Use Application/Browser는 대상 앱 또는 웹 페이지를 지정하고, 실행 시 앱이 열려 있지 않으면 열 수 있는 컨테이너 역할을 한다.

액티비티용도실무 메모
Use Application/Browser앱/브라우저 자동화 범위 지정Modern UI 자동화의 기본 컨테이너. 신규 웹/앱 자동화는 보통 여기서 시작.
Click버튼, 링크, 메뉴 클릭지정한 UI 요소를 클릭한다. 더블클릭, 마우스 버튼, 키 조합 설정 가능.
Type Into텍스트 입력일반 입력, 특수키 입력에 사용. Enter, Tab 같은 키 입력이 필요하면 Set Text보다 적합하다. Modern Type Into는 특수키 입력도 지원한다.
Set Text텍스트를 한 번에 설정긴 문자열을 빠르게 넣을 때 유리. 단, Enter 같은 추가 키 동작은 별도 액티비티가 필요할 수 있다.
Keyboard Shortcuts단축키 입력Ctrl + A, Ctrl + C, Enter, Tab 등 키보드 조작용.
Get TextUI 요소의 텍스트 추출화면 텍스트를 변수로 받을 때 사용. Use Application/Browser 내부에서 사용하는 것이 기본 구조.
Get AttributeUI 요소 속성 조회aaname, text, idx, href, class 등 속성 확인용. 동적 화면 판단에 유용.
Check App State요소 표시/미표시 상태 확인Modern에서 Element Exists 대체 용도로 많이 사용. 요소가 나타나거나 사라지는지 확인하고, 발견/미발견 분기를 둘 수 있다.
Check Element요소 활성/비활성 확인버튼이 클릭 가능한 상태인지, 입력창이 비활성인지 판단할 때 사용.
Navigate Browser브라우저 뒤로/앞으로/새로고침 등Modern 브라우저 기본 이동용. Use Application/Browser 안에서 사용한다.
Go to URL특정 URL 이동기존 Classic의 Navigate To와 유사한 용도로 사용.
Extract Table Data웹/앱 테이블 추출화면의 반복 구조 데이터를 DataTable로 추출할 때 사용.
Find Elements조건에 맞는 여러 UI 요소 찾기검색 결과 목록, 반복되는 버튼, 테이블 행 등 여러 요소를 다룰 때 사용.
For Each UI Element여러 UI 요소 반복 처리Find Elements와 함께 자주 사용. 검색 결과 행을 하나씩 클릭하거나 텍스트를 추출할 때 적합.
Hover마우스 오버메뉴가 hover 상태에서만 표시되는 경우 사용.
Select Item콤보박스/드롭다운 선택HTML select, 데스크톱 콤보박스 선택에 사용.
Take Screenshot화면 캡처오류 발생 시 증적 이미지 저장, 디버깅용으로 사용.
Wait Attribute특정 속성값이 될 때까지 대기버튼 활성화, 상태값 변경 등 화면 로딩 완료 판단에 사용.
Wait Element Vanish요소가 사라질 때까지 대기로딩바, 팝업, 알림창 사라짐 대기용.

Modern UI 실무 패턴

' 요소가 있으면 처리, 없으면 예외
If blnExists Then
    ' 처리
Else
    Throw New BusinessRuleException("필수 버튼을 찾을 수 없습니다.")
End If

Modern에서는 단순 대기보다 Check App State, Wait Attribute, Wait Element Vanish처럼 상태 기반 대기를 우선 고려하는 것이 좋다. 고정 Delay만 사용하는 방식은 화면 속도 차이에 취약하다.


3. Classic UI Automation 액티비티

Classic UI 자동화는 기존 프로젝트 유지보수에서 여전히 많이 만난다. 최신 Studio에서도 Classic 액티비티는 사용할 수 있지만, 신규 개발에서는 Modern을 기본으로 잡는 편이 낫다.

액티비티용도실무 메모
Open Browser브라우저 열기지정 URL을 브라우저로 열고 내부에 액티비티를 배치하는 컨테이너.
Attach Browser이미 열린 브라우저에 연결로그인 후 열려 있는 창, 기존 세션 재사용 시 사용.
Navigate ToURL 이동Classic 브라우저 자동화에서 URL 변경 시 사용.
Click요소 클릭Classic에서는 입력 방식, Simulate, SendWindowMessages, Hardware Events 차이를 확인해야 한다.
Type Into텍스트 입력한 글자씩 입력하는 방식에 가까워 대량 입력 시 느릴 수 있다. 특수키 입력 가능.
Set Text텍스트 속성에 값 설정입력 속도가 빠르지만, 모든 UI에서 안정적으로 동작하지는 않는다.
Element Exists요소 존재 여부 확인Boolean 결과로 요소 존재 여부 판단. 보이지 않는 요소도 존재 여부 확인 대상이 될 수 있다.
Find Element요소가 나타날 때까지 대기 후 반환UIElement 변수를 받아 재사용할 때 사용.
Find Children하위 UI 요소 목록 조회테이블, 목록, 반복 영역의 자식 요소를 가져올 때 사용.
Get Text / Get Full Text텍스트 추출일반 텍스트 추출. 화면 구조에 따라 결과 차이가 있을 수 있다.
Text Exists특정 텍스트 존재 여부 확인특정 문구가 화면에 있는지 판단.
Click Text텍스트 위치 클릭Selector가 불안정하지만 텍스트가 명확할 때 보조적으로 사용.
Wait Element Appear요소가 나타날 때까지 대기로딩 후 특정 버튼/영역이 나타나는지 확인.
Wait Element Vanish요소가 사라질 때까지 대기로딩창, 팝업 제거 대기.
Set Focus요소에 포커스 이동입력 전 포커스가 필요한 화면에서 사용.
Send Hotkey키보드 단축키 입력Ctrl+A, Ctrl+C, Alt+F4, Enter 등.
Take Screenshot화면 캡처오류 증적, 로그 첨부용.

Classic UI 실무 메모

  • Element Exists는 Boolean 판단용으로 좋지만, 화면이 늦게 뜨는 경우 Retry Scope 또는 적절한 Timeout을 함께 고려한다.
  • 브라우저 URL에 세션값, 토큰, timestamp가 섞여 있으면 Selector 또는 URL 조건에 와일드카드를 사용한다.
  • Classic 입력 방식은 Simulate, SendWindowMessages, 기본 입력 방식의 호환성이 다르므로 대상 프로그램별로 테스트가 필요하다.

4. Modern Excel 액티비티

UiPath Excel Modern은 Excel Process ScopeUse Excel File을 중심으로 구성한다. Excel Process Scope는 Excel 프로세스 실행/재사용/관리 설정을 담당하고, Use Excel File은 자동화에서 사용할 Excel 파일 범위를 지정한다.

액티비티용도실무 메모
Excel Process ScopeExcel 프로세스 관리기존 Excel 프로세스 처리 방식, 새 프로세스 실행 방식 등을 제어할 때 사용.
Use Excel FileExcel 파일 사용 범위 지정내부에 Read/Write/For Each Excel Row 등을 배치한다.
Read Range범위 읽기지정 범위를 DataTable로 읽는다. 범위를 비우면 전체 사용 범위를 읽는 식으로 동작할 수 있다.
Write DataTable to ExcelDataTable을 Excel에 쓰기DataTable 결과를 시트에 출력할 때 사용. 대량 데이터 출력의 기본 선택지.
Append Range기존 데이터 아래에 추가결과 누적, 로그 누적, 보고서 누적에 사용.
For Each Excel RowExcel 행 반복Excel 범위를 행 단위로 처리. 빈 행 처리 옵션을 확인해야 한다.
Read Cell Value단일 셀 읽기설정값, 기준일자, 단일 결과값 읽기.
Write Cell단일 셀 쓰기상태값, 결과 메시지, 개별 필드 입력.
Copy/Paste Range범위 복사/붙여넣기양식 기반 보고서 작성 시 사용.
Format As Table범위를 표로 변환필터/표 스타일 적용 시 사용.
Autofit Range열/행 너비 자동 맞춤결과 파일 가독성 개선용.
Find First/Last Data Row첫/마지막 데이터 행 찾기동적 범위 계산에 사용.
Save Excel File / Save Workbook변경사항 저장파일 저장 시점 명확화.

Modern Excel 기본 구조

Excel Process Scope
└─ Use Excel File
   ├─ Read Range
   ├─ For Each Excel Row
   ├─ Write DataTable to Excel
   └─ Save Excel File

Excel 실무 메모

  • 신규 자동화는 Modern Excel을 우선 고려한다.
  • 복잡한 매크로, 서식, 피벗, 기존 Excel UI 조작이 강하면 Classic/App Integration이 더 맞을 수 있다.
  • Excel이 설치되지 않은 서버/로봇 환경이라면 Workbook 액티비티를 검토한다.

5. Classic Excel / Workbook 액티비티

Classic Excel은 Excel Application Scope 안에 Excel 액티비티를 넣는 구조가 기본이다. Excel Application Scope는 Microsoft Excel이 설치된 환경에서만 사용할 수 있다.

구분액티비티용도실무 메모
Classic ExcelExcel Application ScopeExcel 파일 열기 및 작업 범위 지정기존 프로젝트에서 가장 흔한 구조.
Classic ExcelRead Range범위 읽기DataTable로 읽어 후처리.
Classic ExcelWrite RangeDataTable 쓰기지정 셀부터 DataTable 출력. 숨겨진 행/열이 있는 범위에 쓰면 오류가 날 수 있다.
Classic ExcelAppend Range기존 데이터 아래 추가로그/결과 누적.
Classic ExcelRead Cell / Write Cell단일 셀 읽기/쓰기설정값, 상태값 처리.
Classic ExcelFilter TableExcel 테이블 필터표 형식 데이터 필터링.
Classic ExcelSort TableExcel 테이블 정렬보고서 정렬.
Classic ExcelExecute Macro / Invoke VBA매크로/VBA 실행기존 Excel 양식 자동화 시 사용.
Classic ExcelSave Workbook저장명시적 저장이 필요한 경우 사용.
WorkbookRead Range WorkbookExcel 미설치 환경에서 범위 읽기파일 기반으로 범위를 읽어 DataTable로 반환.
WorkbookWrite Range WorkbookExcel 미설치 환경에서 범위 쓰기단순 파일 쓰기용.
WorkbookAppend Range WorkbookExcel 미설치 환경에서 데이터 추가대량·복잡 서식보다는 단순 데이터 누적에 적합.

6. DataTable 관련 액티비티

액티비티용도실무 메모
Build Data Table빈 DataTable 구조 생성컬럼 구조를 직접 정의할 때 사용.
Filter Data Table행/열 필터링입력 DataTable과 출력 DataTable을 같은 변수로 지정하면 원본이 덮어써진다.
For Each Row in Data TableDataTable 행 반복각 행마다 처리. 이 액티비티는 child activity에서 persistence를 지원하지 않는 제한이 있다.
Get Row Item현재 Row의 특정 컬럼값 가져오기row("컬럼명").ToString으로 대체 가능한 경우도 많다.
Add Data Row행 추가결과 DataTable에 처리 결과를 쌓을 때 사용.
Remove Duplicate Rows중복 행 제거DataTable 기준 중복 제거.
Merge Data TableDataTable 병합Source를 Destination에 병합. 스키마 차이 처리 옵션 확인 필요.
Join Data Tables두 DataTable 조인키 컬럼 기준으로 Inner/Left/Full Join 처리.
Output Data TableDataTable을 문자열로 변환디버깅, 로그 출력용. CSV 형식 문자열로 변환한다.
Generate Data Table From Text텍스트를 DataTable로 변환CSV성 텍스트, 구분자 기반 데이터 변환에 사용.
Clear Data TableDataTable 내용 삭제구조는 유지하고 행만 비울 때 사용.

7. Workflow / System 액티비티

액티비티용도실무 메모
Assign / Set Variable Value변수 값 지정단일 변수 대입.
Multiple Assign여러 변수 한 번에 지정초기화 구간에서 Assign을 여러 개 늘어놓는 대신 사용하기 좋다.
If조건 분기단순 조건 분기. 중첩이 깊어지면 guard clause 방식으로 If → Throw를 앞단에 빼는 편이 가독성이 좋다.
Else If다중 조건 분기여러 조건을 순차 평가할 때 사용.
Switch값 기준 다중 분기상태값, 코드값, 타입값 분기에 적합.
For EachCollection 반복List, Array, Dictionary 등 반복 처리.
While조건 기반 반복종료 조건이 명확해야 한다. 무한루프 방지 필요.
Do While최소 1회 실행 후 반복최초 실행이 필요한 루프에서 사용.
Break반복 중단For Each/While 내부에서 즉시 반복 종료.
Continue / Skip Current현재 반복 건너뛰기현재 건만 스킵하고 다음 반복으로 이동.
Return현재 Workflow 종료Invoke된 Workflow에서 더 이상 진행하지 않고 빠져나올 때 사용.
Try Catch예외 처리시스템 예외/업무 예외 구분 처리에 사용.
Throw예외 발생조건 불충족 시 명시적으로 예외를 던질 때 사용.
Rethrow잡은 예외 재발생Catch 안에서만 사용 가능. 로깅 후 원래 예외를 상위로 다시 넘길 때 사용.
Retry Scope실패 시 재시도일시적 UI 불안정, 네트워크 지연, 화면 로딩 지연 대응에 사용.
Delay고정 시간 대기최후 수단에 가깝다. 가능하면 상태 기반 대기 사용.
Invoke Workflow File다른 XAML 호출공통 로직 모듈화. In/Out/InOut 인수 관리가 중요하다.
Invoke CodeVB.NET 코드 실행액티비티로 복잡해지는 로직을 코드로 처리할 때 사용.
Log Message로그 기록운영 로그, 디버깅 로그 남기기.
Write LineOutput 패널 출력간단한 디버깅용. 운영 로그는 Log Message가 더 적합.
Message Box메시지 창 표시개발/디버깅용. 무인 로봇에서는 사용 주의.
Kill Process프로세스 종료Excel/Chrome 등 잔여 프로세스 정리. 대상 범위를 신중히 잡아야 한다.

8. Orchestrator / Asset / Queue 액티비티

액티비티용도실무 메모
Get AssetOrchestrator Asset 값 조회URL, 경로, 설정값 등 환경별 값을 가져올 때 사용.
Set AssetAsset 값 업데이트실행 중 상태값 저장 등에 사용 가능. Robot에 Asset 편집 권한이 필요하다.
Get Credential / Get Orchestrator Credential자격증명 조회ID/PW를 코드나 Config 파일에 직접 쓰지 않고 Orchestrator에서 가져온다.
Set Credential자격증명 업데이트비밀번호 교체 자동화 등 특수한 경우 사용.
Get SecretSecret 조회Credential보다 더 일반화된 보안값 관리에 사용.
Add Queue ItemQueue에 거래 데이터 추가Dispatcher 역할 프로세스에서 사용. Robot이 Orchestrator에 연결되어 있어야 한다.
Get Transaction ItemQueue에서 처리 대상 가져오기Performer 역할 프로세스에서 사용.
Set Transaction StatusQueue 처리 결과 설정Success, Business Exception, Application Exception 구분 처리.
Get Queue ItemsQueue 항목 조회상태 확인, 재처리 대상 조회 등에 사용.
Wait Queue ItemQueue 항목 대기Queue가 비어 있으면 새 항목을 기다리는 방식. Get Transaction Item과 동작이 다르다.
Orchestrator HTTP RequestOrchestrator API 호출기본 액티비티로 어려운 Orchestrator 기능 호출 시 사용.

9. 자주 쓰는 VB.NET 문자열 메서드

UiPath Studio의 표현식은 VB.NET 기반이므로 문자열/리스트/DataTable 처리는 VB.NET과 .NET 메서드를 자주 사용한다.

메서드예시설명
.ToString()intValue.ToString()값을 문자열로 변환. Null 가능성이 있으면 바로 호출하지 말고 사전 체크 필요.
CStr()CStr(intValue)VB 변환 함수. 값을 String으로 변환.
CInt()CInt(strValue)값을 Integer로 변환. 숫자가 아닌 문자열이면 오류 가능. VB 변환 함수는 Microsoft 문서상 CInt, CStr 등으로 제공된다.
Integer.TryParse()Integer.TryParse(strValue, intValue)변환 성공/실패를 Boolean으로 반환하므로 운영 로직에서는 CInt보다 안전한 경우가 많다.
.Replace()strText.Replace("A", "B")문자열 A를 B로 치환.
.Split()strText.Split(","c)구분자를 기준으로 문자열을 배열로 분리. String.Split은 구분자를 기준으로 부분 문자열 배열을 반환한다.
.Trim()strText.Trim()앞뒤 공백 제거.
.StartsWith()strText.StartsWith("A")특정 문자열로 시작하는지 Boolean 반환.
.EndsWith()strText.EndsWith(".xlsx")특정 문자열로 끝나는지 Boolean 반환. EndWith가 아니라 EndsWith가 정확한 메서드명.
.Contains()strText.Contains("검색어")특정 문자열 포함 여부 확인.
.Substring()strText.Substring(0, 5)지정 위치부터 문자열 일부 추출.
.LengthstrText.Length문자열 길이.
.ToUpper()strText.ToUpper()대문자 변환. 비교/정규화 목적이면 ToUpperInvariant()도 고려.
.ToLower()strText.ToLower()소문자 변환.
String.IsNullOrWhiteSpace()String.IsNullOrWhiteSpace(strText)Null, 빈 문자열, 공백 문자열 여부 판단.
String.Join()String.Join(",", arrText)배열/List를 구분자로 연결해 문자열 생성.
Environment.NewLinestrText.Split({Environment.NewLine}, StringSplitOptions.None)줄바꿈 기준 처리 시 사용.

문자열 실무 예시

' 콤마 기준 분리 + 앞뒤 공백 제거 + 배열 변환
arrText = strText.Split(","c).Select(Function(x) x.Trim()).ToArray()
' 줄바꿈 기준 분리
arrLines = strText.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
' 숫자 변환 안전 처리
Dim intValue As Integer

If Integer.TryParse(strText, intValue) Then
    ' 변환 성공
Else
    Throw New BusinessRuleException("숫자 형식이 아닙니다.")
End If

10. List / Array / LINQ 메서드

LINQ는 VB.NET에서 Collection 데이터를 간결하게 다룰 때 많이 사용한다. Microsoft 문서 기준으로 LINQ는 데이터 소스 종류와 관계없이 일관된 쿼리 기능을 제공한다.

메서드예시설명
.CountlistData.CountList 항목 수.
.Add()listData.Add("A")List에 항목 추가.
.Remove()listData.Remove("A")특정 항목 제거.
.Contains()listData.Contains("A")항목 포함 여부.
.First()listData.First()첫 번째 항목. 빈 리스트면 오류 가능.
.FirstOrDefault()listData.FirstOrDefault()첫 번째 항목 또는 기본값.
.Last()listData.Last()마지막 항목. 빈 리스트면 오류 가능.
.Where()listData.Where(Function(x) x.Contains("A")).ToList()조건 필터.
.Select()listData.Select(Function(x) x.Trim()).ToList()각 항목 변환. Select는 지연 실행되므로 실제 배열/List 변환 시 ToArray() 또는 ToList()를 붙이는 경우가 많다.
.Distinct()listData.Distinct().ToList()중복 제거. 결과 순서 보장은 상황에 따라 기대하지 않는 편이 안전하다.
.OrderBy()listData.OrderBy(Function(x) x).ToList()오름차순 정렬.
.OrderByDescending()listData.OrderByDescending(Function(x) x).ToList()내림차순 정렬.
.SequenceEqual()listA.SequenceEqual(listB)순서와 값이 같은지 비교.
.ToArray()listData.ToArray()List를 Array로 변환.
.ToList()arrData.ToList()Array/IEnumerable을 List로 변환.

List 비교 예시

' 순서까지 동일해야 같은 경우
blnSame = listA.SequenceEqual(listB)
' 순서는 상관없고 값 구성이 같은지 비교
blnSame = listA.OrderBy(Function(x) x).SequenceEqual(listB.OrderBy(Function(x) x))
' 중복 제거
listUnique = listData.Distinct().ToList()

11. DataTable VB.NET 표현식

표현식설명
dtData.Rows.CountDataTable 행 개수
dtData.Columns.Count컬럼 개수
row("컬럼명").ToString()현재 행의 특정 컬럼값 문자열 변환
row("컬럼명").ToString().Trim()컬럼값 앞뒤 공백 제거
dtData.Clone()구조만 복사하고 행은 없는 빈 DataTable 생성
dtData.Copy()구조와 데이터 모두 복사
dtData.AsEnumerable()DataTable을 LINQ로 다루기 위한 Enumerable 형태로 변환. 반환된 enumerable은 원본 DataTable에 바인딩된다.
CopyToDataTable()LINQ 결과 DataRow들을 DataTable로 복사.

DataTable 필터 예시

' Status 컬럼이 OK인 행만 필터
rows = dtData.AsEnumerable().
    Where(Function(r) r("Status").ToString().Trim() = "OK")
' 필터 결과를 DataTable로 변환
If rows.Any() Then
    dtFiltered = rows.CopyToDataTable()
Else
    dtFiltered = dtData.Clone()
End If

컬럼값 안전 처리 예시

strValue = If(IsDBNull(row("컬럼명")), "", row("컬럼명").ToString().Trim())

12. Regex 정규식 표현식

.NET 정규식은 Regex.Match 또는 Regex.Matches로 패턴에 맞는 텍스트를 찾는다. Match.Groups를 사용하면 괄호로 묶은 캡처 그룹 값을 가져올 수 있다.

목적예시
6자리 숫자 찾기System.Text.RegularExpressions.Regex.Match(strText, "\d{6}").Value
인증번호: 뒤 6자리 숫자 추출System.Text.RegularExpressions.Regex.Match(strText, "(?<=인증번호:\s*)\d{6}").Value
그룹으로 추출System.Text.RegularExpressions.Regex.Match(strText, "인증번호:\s*(\d{6})").Groups(1).Value
숫자로 시작하는 줄 확인System.Text.RegularExpressions.Regex.IsMatch(strLine, "^\d+\s")
이메일 형식 간단 확인System.Text.RegularExpressions.Regex.IsMatch(strMail, "^[^@\s]+@[^@\s]+\.[^@\s]+$")

인증번호 추출 예시

strCode = System.Text.RegularExpressions.Regex.Match(
    strText,
    "인증번호:\s*(\d{6})"
).Groups(1).Value

13. 자주 쓰는 판단/예외 패턴

필수값 검증

If String.IsNullOrWhiteSpace(strUserId) Then
    Throw New BusinessRuleException("사용자 ID가 비어 있습니다.")
End If

리스트 비어 있음 검증

If listData Is Nothing OrElse listData.Count = 0 Then
    Throw New BusinessRuleException("처리할 데이터가 없습니다.")
End If

DataTable 비어 있음 검증

If dtData Is Nothing OrElse dtData.Rows.Count = 0 Then
    Throw New BusinessRuleException("조회 결과가 없습니다.")
End If

중첩 If 줄이기

나쁜 예시는 아니지만, 중첩이 깊어지면 유지보수가 어려워진다.

If 조건1 Then
    If 조건2 Then
        If 조건3 Then
            ' 실제 처리
        End If
    End If
End If

검증 실패 시 바로 예외를 던지는 방식이 더 읽기 쉽다.

If Not 조건1 Then
    Throw New BusinessRuleException("조건1 불충족")
End If

If Not 조건2 Then
    Throw New BusinessRuleException("조건2 불충족")
End If

If Not 조건3 Then
    Throw New BusinessRuleException("조건3 불충족")
End If

' 실제 처리

14. 개인적으로 자주 쓰는 구성 예시

웹 로그인

Use Application/Browser
├─ Go to URL
├─ Check App State: 로그인 화면 확인
├─ Type Into: ID 입력
├─ Type Secure Text 또는 Type Into: PW 입력
├─ Click: 로그인 버튼
└─ Check App State: 로그인 성공 여부 확인

Excel 읽기 → 필터 → 결과 쓰기

Excel Process Scope
└─ Use Excel File
   ├─ Read Range → dtInput
   ├─ Filter Data Table → dtFiltered
   └─ Write DataTable to Excel → 결과 시트

Queue 기반 처리

Dispatcher
└─ Add Queue Item

Performer
├─ Get Transaction Item
├─ Process Transaction
└─ Set Transaction Status

예외 처리 기본 구조

Try
└─ 실제 처리

Catch BusinessRuleException
└─ 업무 예외 로그 / 실패 처리

Catch Exception
└─ 시스템 예외 로그 / 재시도 또는 중단

15. 업데이트용 체크리스트

새 액티비티나 메서드를 추가할 때는 아래 형식으로 계속 누적한다.

## 액티비티명

- 구분: Modern / Classic / Excel / System / Orchestrator
- 용도:
- 자주 쓰는 위치:
- 입력값:
- 출력값:
- 주의사항:
- 예시:

예시:

## Check App State

- 구분: Modern UI Automation
- 용도: 특정 UI 요소가 나타나거나 사라지는지 확인
- 자주 쓰는 위치: 로그인 성공 확인, 로딩 완료 확인, 팝업 존재 확인
- 입력값: Target Element
- 출력/분기: Target appears / Target does not appear
- 주의사항: 단순 Delay보다 안정적이지만, Target 지정이 부정확하면 오탐 가능
- 예시: 로그인 버튼 클릭 후 메인 화면의 특정 메뉴가 나타나는지 확인
profile
슬로우스타터 개발자 일지

0개의 댓글