
⚡ UiPath Studio 초보자 가이드
3회차 - 웹 자동화, 이메일, 에러 처리, 고급 기법
📚 1~2회차 복습: 기본 액티비티, 조건문, 반복문, 파일/엑셀 작업
🎯 3회차 목표: 웹 자동화, 이메일 발송, 에러 처리, REFramework 소개
🎯 3회차 목표: 웹 자동화, 이메일 발송, 에러 처리, REFramework 소개
🌐 1단계: 웹 자동화 (Web Automation)
Step 1
브라우저 확장 프로그램 설치
- UiPath Studio 상단 메뉴에서 Tools → Extensions 클릭
- 사용하는 브라우저 확장 프로그램 설치:
- Chrome Extension
- Firefox Extension
- Edge Extension
- "Install" 버튼 클릭 후 브라우저 재시작
- 브라우저 확장 프로그램에서 UiPath 활성화 확인
⚠️ 주의: 확장 프로그램이 설치되지 않으면 웹 자동화가 작동하지 않습니다!
Step 2
첫 번째 웹 자동화 - 구글 검색
- 새 프로젝트 생성: "웹자동화실습"
- 변수 생성:
searchKeyword(String) = "UiPath 자동화"
- "Use Application/Browser" 액티비티 추가
- "Open" 버튼 클릭 → URL에
"https://www.google.com"입력
Step 3
검색어 입력 및 검색 실행
- Use Application/Browser 안에 "Type Into" 액티비티 추가
- "Indicate element" 버튼 클릭
- 구글 검색창 클릭하여 선택
- Properties:
- Text:
searchKeyword - EmptyField: True (기존 내용 지우기)
- Text:
- "Send Hotkey" 액티비티 추가
- Key: Enter 선택
- 실행하여 자동 검색 확인
💡 팁: Type Into 뒤에 "[k(enter)]"를 추가하면 Send Hotkey 없이도 Enter 키를 누를 수 있습니다.
예:
예:
searchKeyword + "[k(enter)]"
Step 4
웹 데이터 추출하기 (Data Scraping)
- 검색 결과 페이지에서 "Extract Table Data" 액티비티 추가
- "Indicate element" 클릭
- 첫 번째 검색 결과 제목 클릭
- "Next" → 두 번째 검색 결과 클릭하여 패턴 인식
- 추출할 최대 결과 수 입력 (예: 10)
- 변수에 저장:
searchResults(DataTable) - For Each Row로 결과 출력하거나 엑셀에 저장
Step 5
웹 클릭 및 상호작용
- "Click" 액티비티 추가
- "Indicate element"로 클릭할 요소 선택
- Properties:
- ClickType: CLICK_SINGLE (단일 클릭)
- MouseButton: BTN_LEFT (왼쪽 버튼)
- "Get Text" 액티비티로 특정 텍스트 추출
- 변수에 저장하여 활용
📧 2단계: 이메일 자동화
ℹ️ 이메일 액티비티 종류:
| 액티비티 | 프로토콜 | 설명 |
|---|---|---|
| Send SMTP Mail Message | SMTP | 이메일 발송 (Gmail, Outlook 등) |
| Get IMAP Mail Messages | IMAP | 이메일 수신 및 읽기 |
| Get Outlook Mail Messages | Outlook | Outlook 전용 메일 읽기 |
Step 6
Gmail SMTP 설정 (사전 준비)
- Gmail 계정 로그인
- Google 계정 관리 → 보안
- 2단계 인증 활성화
- "앱 비밀번호" 생성 (메일 앱 선택)
- 16자리 비밀번호 복사 (공백 제거)
⚠️ 중요: 일반 Gmail 비밀번호가 아닌 "앱 비밀번호"를 사용해야 합니다!
Step 7
이메일 발송 자동화
- 새 프로젝트: "이메일자동화"
- "Send SMTP Mail Message" 액티비티 추가
- Properties 설정:
Server: "smtp.gmail.com" Port: 587 Email: "your-email@gmail.com" Password: "앱비밀번호16자리" To: "recipient@example.com" Subject: "UiPath 자동 발송 테스트" Body: "이 메일은 UiPath로 자동 발송되었습니다." EnableSSL: True
- 실행하여 이메일 발송 확인
💡 팁: 여러 수신자에게 보낼 때는 To 필드에 세미콜론(;)으로 구분합니다.
예: "user1@example.com;user2@example.com"
예: "user1@example.com;user2@example.com"
Step 8
첨부 파일이 있는 이메일 발송
- Send SMTP Mail Message Properties에서:
- Files:
{"C:\Temp\report.xlsx"} - 여러 파일 첨부:
{"C:\Temp\file1.xlsx", "C:\Temp\file2.pdf"}
- Body에 HTML 사용:
- IsBodyHtml: True
- Body:
"<h1>자동 보고서</h1><p>첨부 파일을 확인해주세요.</p>"
Step 9
이메일 읽기 및 처리
- 변수 생성:
mailMessages(List<System.Net.Mail.MailMessage>) - "Get IMAP Mail Messages" 액티비티 추가
- Properties:
Server: "imap.gmail.com" Port: 993 Email: "your-email@gmail.com" Password: "앱비밀번호" Top: 10 (최근 10개) Messages: mailMessages
- "For Each" 액티비티로 메일 순회:
- TypeArgument: System.Net.Mail.MailMessage
- Values:
mailMessages
- Body 안에 Log Message 추가:
"제목: " + item.Subject + ", 발신자: " + item.From.ToString
🛡️ 3단계: 에러 처리 (Error Handling)
🎯 왜 에러 처리가 중요한가?
- 자동화 중 예기치 않은 상황 발생 (요소 못 찾음, 파일 없음 등)
- 에러 처리 없으면 자동화 전체 중단
- 로그 기록으로 문제 파악 및 해결 가능
Step 10
Try Catch로 에러 처리하기
- 새 프로젝트: "에러처리실습"
- "Try Catch" 액티비티 추가
- Try 섹션에 에러 발생 가능한 코드 작성:
- 예: Read Text File (존재하지 않는 파일)
Step 11
Catch 블록 구성
- Catches 섹션에서 "Add new catch" 클릭
- Exception Type 선택:
Exception Type 발생 상황 System.IO.FileNotFoundException 파일을 찾을 수 없음 System.Exception 모든 에러 (가장 범용적) UiPath.Core.SelectorNotFoundException UI 요소를 찾을 수 없음 - Catch 블록 안에 처리 코드:
- Log Message:
"에러 발생: " + exception.Message - Message Box로 에러 알림
- Log Message:
Step 12
Finally 블록 사용
- Finally 섹션: 에러 발생 여부와 관계없이 항상 실행
- 사용 예시:
- 브라우저 닫기
- 파일 저장
- 리소스 정리
- 완료 로그 기록
- Finally 안에 Log Message 추가:
"작업 완료 - " + Now.ToString
Step 13
Retry Scope로 재시도 구현
- "Retry Scope" 액티비티 추가
- Properties:
- NumberOfRetries: 3 (3번 재시도)
- RetryInterval: 00:00:05 (5초 대기)
- Action 섹션: 시도할 작업
- Condition 섹션: 성공 조건 확인
- 웹 요소 클릭이나 파일 읽기처럼 실패할 수 있는 작업에 유용
💡 팁: 네트워크 지연이나 시스템 로딩 시간으로 인한 일시적 에러 해결에 효과적입니다.
🏗️ 4단계: 프로젝트 구조화 및 모범 사례
Step 14
Workflow 파일 분리하기
- 큰 프로젝트는 여러 개의 Workflow로 분리
- Project 패널에서 우클릭 → New → Sequence/Flowchart
- 기능별 파일 생성 예시:
Login.xaml- 로그인 처리ProcessData.xaml- 데이터 처리SendReport.xaml- 보고서 발송
- "Invoke Workflow File" 액티비티로 호출
- Arguments로 데이터 주고받기
Step 15
Arguments vs Variables
| 구분 | Variables (변수) | Arguments (인수) |
|---|---|---|
| 용도 | Workflow 내부에서만 사용 | Workflow 간 데이터 전달 |
| 범위 | 해당 Workflow만 | 다른 Workflow와 공유 |
| 방향 | 없음 | In, Out, In/Out |
- In: 입력 받기 (Main → Sub)
- Out: 출력 전달 (Sub → Main)
- In/Out: 입출력 모두
Step 16
Arguments 실습
- 새 Sequence 생성:
Calculator.xaml - Arguments 탭에서 인수 생성:
- Name:
in_Number1, Direction: In, Type: Int32 - Name:
in_Number2, Direction: In, Type: Int32 - Name:
out_Result, Direction: Out, Type: Int32
- Name:
- Assign 액티비티로 계산:
out_Result = in_Number1 + in_Number2
- Main.xaml에서 Invoke Workflow File로 호출
- Import Arguments에서 값 전달:
- in_Number1: 10
- in_Number2: 20
- out_Result: resultValue (Main의 변수)
Step 17
Config 파일 활용하기
- 프로젝트 설정을 엑셀이나 JSON 파일로 관리
- Config.xlsx 생성 예시:
Name Value EmailTo admin@company.com ReportPath C:\Reports\ MaxRetries 3 - 프로젝트 시작 시 Config 읽어서 Dictionary에 저장
- 코드 수정 없이 설정값만 변경 가능
💡 팁: Dictionary는 키-값 쌍으로 데이터를 저장하는 자료구조입니다.
Type: Dictionary<String, String> 또는 Dictionary<String, Object>
Type: Dictionary<String, String> 또는 Dictionary<String, Object>
🎯 5단계: REFramework 소개 고급
🏆 REFramework란?
Robotic Enterprise Framework의 약자로, UiPath가 제공하는 엔터프라이즈급 프로젝트 템플릿입니다.
- 대규모 자동화 프로젝트의 표준 구조
- 에러 처리, 로깅, 재시도 로직 내장
- 트랜잭션 기반 처리 (큐 아이템별 처리)
- 상태 머신 패턴 사용 (Init, Get Transaction, Process, End)
Step 18
REFramework 프로젝트 생성
- UiPath Studio에서 "New Project" 클릭
- "Robotic Enterprise Framework" 템플릿 선택
- 프로젝트 구조:
- Main.xaml: 전체 흐름 제어 (State Machine)
- Init State: 초기화 및 설정 로드
- Get Transaction Data: 처리할 데이터 가져오기
- Process Transaction: 실제 비즈니스 로직
- End Process: 종료 처리 및 정리
Step 19
REFramework 작동 원리
- 1. Initialization (초기화):
- Config 파일 읽기
- 애플리케이션 로그인
- 필요한 리소스 준비
- 2. Get Transaction Data:
- Queue에서 아이템 가져오기 또는
- DataTable에서 행 가져오기
- 처리할 데이터가 없으면 End로 이동
- 3. Process Transaction:
- 실제 비즈니스 로직 실행
- 성공 시: Success 상태 기록
- Business Exception: 해당 아이템만 실패 처리
- System Exception: 재시도 또는 전체 중단
- 4. End Process:
- 애플리케이션 닫기
- 최종 리포트 생성
- 리소스 정리
Step 20
언제 REFramework를 사용하나?
| 사용 권장 | 사용 불필요 |
|---|---|
|
|
🚀 6단계: 실전 종합 프로젝트
프로젝트: 자동 일일 리포트 시스템
엑셀 데이터를 읽어서 웹에서 정보 조회 후 이메일로 발송하는 완전 자동화
종합 실습
프로젝트 구현 단계
- 엑셀에서 처리할 목록 읽기
- 고객명, 주문번호 등
- Read Range로 DataTable에 저장
- For Each Row로 각 항목 처리
- Try Catch로 에러 처리
- Retry Scope로 재시도 로직
- 웹사이트에서 정보 조회
- Use Application/Browser
- Type Into로 검색
- Get Text로 결과 추출
- 결과를 새로운 엑셀에 저장
- Write Cell 또는 Write Range
- 날짜별 파일명 생성
- 완료 리포트 이메일 발송
- Send SMTP Mail Message
- 엑셀 파일 첨부
- 처리 결과 요약 포함
응용 아이디어
배운 내용으로 만들 수 있는 자동화
- 📊 데이터 수집 로봇: 여러 웹사이트에서 가격 정보 수집하여 엑셀 비교표 작성
- 📧 이메일 자동 응답: 특정 키워드가 포함된 메일에 자동으로 답장
- 📝 자동 보고서 생성: 일일 판매 데이터를 집계하여 PDF 리포트 생성 및 발송
- 🔄 파일 정리 로봇: 다운로드 폴더의 파일을 형식별로 자동 분류
- 💼 HR 온보딩: 신입사원 정보를 여러 시스템에 자동 등록
- 🛒 재고 모니터링: 온라인 쇼핑몰 재고 확인 후 부족 시 알림
- 📱 SNS 자동 포스팅: 엑셀 스케줄에 따라 정기적으로 콘텐츠 게시
💡 7단계: 모범 사례 및 팁
Best Practice
효율적인 자동화를 위한 가이드라인
1. 변수 및 인수 네이밍 규칙
- 변수: camelCase 사용 (예:
userName,totalAmount) - In 인수:
in_접두사 (예:in_FilePath) - Out 인수:
out_접두사 (예:out_Result) - Config:
config_접두사 (예:config_EmailTo) - 의미 있는 이름 사용, 축약 최소화
2. 로깅 (Logging) 활용
- "Log Message" 액티비티로 진행 상황 기록
- Level 설정:
- Info: 일반 정보 (시작, 완료 등)
- Warn: 경고 (예상 가능한 문제)
- Error: 에러 발생
- Fatal: 치명적 오류
- 예시:
Log Message: "프로세스 시작 - " + Now.ToString Level: Info Log Message: "에러 발생: " + exception.Message Level: Error
3. Selector 안정성 향상
- Anchor Base 액티비티 사용: 고정된 요소 기준으로 상대 위치 지정
- Dynamic Selector: 변수를 Selector에 포함
<html title='주문번호: "+orderNumber+"' />
- UI Explorer로 Selector 수정 및 최적화
- idx (인덱스) 속성 최소화 - 화면 변경에 취약
- 가능하면 id, name, class 속성 우선 사용
4. 대기 시간 (Wait) 설정
- "Delay" 대신 "Wait Element Vanish" 또는 "Element Exists" 사용
- 고정 대기 시간보다 조건부 대기가 효율적
- Timeout 속성 적절히 설정 (기본 30초)
- 예시:
- 로딩 중: Wait Element Vanish (로딩 아이콘)
- 버튼 활성화: Wait Attribute (enabled='true')
5. 데이터 보안
- Get Credential 액티비티로 비밀번호 안전하게 관리
- Windows Credential Manager 또는 Orchestrator Assets 활용
- 코드에 직접 비밀번호 하드코딩 금지
- 민감한 로그는 "Private" 옵션 활성화
Performance Tips
성능 최적화 기법
- ⚡ SimulateType/SimulateClick 사용: 기본 Type/Click보다 10배 빠름
- 백그라운드 실행 불가 시 SendWindowMessages 대안
- ⚡ 엑셀 Visible=False로 설정: 화면 표시 없이 더 빠른 처리
- ⚡ Parallel 액티비티: 여러 작업 동시 실행
- 예: 여러 웹사이트 동시 스크래핑
- ⚡ 컴파일 모드: 큰 프로젝트는 컴파일하여 실행 속도 향상
- ⚡ DataTable 최적화: LINQ 쿼리 활용
filteredDT = dt.Select("[나이] > 20").CopyToDataTable()
🔍 8단계: 디버깅 및 문제 해결
Debugging
효과적인 디버깅 방법
1. Breakpoint (중단점) 사용
- 액티비티 좌측을 클릭하여 빨간 점 표시
- F5로 Debug 실행
- 해당 지점에서 일시 중지되어 변수 값 확인 가능
- F10: Step Over (다음 액티비티로)
- F11: Step Into (Workflow 내부로)
2. Locals Panel 활용
- 디버그 중 현재 모든 변수 값 실시간 확인
- View → Locals Panel 열기
- 변수 값을 더블클릭하여 수정도 가능
3. Slow Step 기능
- Ribbon 메뉴에서 "Slow Step" 토글
- 실행 속도를 늦춰서 각 단계 관찰
- UI 자동화 디버깅에 유용
4. 일반적인 문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| Selector not found | UI 요소 변경/없음 | UI Explorer로 Selector 재확인, Anchor Base 사용 |
| Timeout Exception | 대기 시간 초과 | Timeout 속성 증가, Wait 액티비티 추가 |
| Cannot convert String to Int32 | 타입 불일치 | Convert.ToInt32() 또는 Integer.Parse() 사용 |
| Object reference not set | null 값 참조 | If 조건으로 null 체크, IsNothing() 함수 |
| File in use | 파일이 열려있음 | Close Application, Kill Process |
🎯 9단계: Orchestrator 소개 (선택)
🌐 UiPath Orchestrator란?
로봇을 중앙에서 관리, 배포, 모니터링하는 웹 기반 플랫폼
주요 기능:
- 🤖 로봇 관리: 여러 로봇을 한 곳에서 제어
- 📅 스케줄링: 특정 시간에 자동 실행
- 📊 Queue 관리: 작업 아이템을 Queue에 저장하여 순차 처리
- 🔐 Asset 관리: 비밀번호, API 키 등 안전하게 보관
- 📈 모니터링: 실행 로그, 성공/실패율 대시보드
- 📦 패키지 배포: 프로젝트를 패키지로 게시 및 배포
Orchestrator 시작
Orchestrator 연결 (Community Cloud)
- UiPath Studio 상단 "Publish" 버튼 클릭
- Orchestrator Tenant URL 입력 또는 Community Cloud 선택
- 프로젝트가 패키지로 업로드됨
- Orchestrator 웹에서 프로세스 생성 및 로봇 할당
- 스케줄 설정하여 자동 실행
💡 팁: Community Edition은 Orchestrator Cloud를 무료로 사용할 수 있습니다!
📚 10단계: 추가 학습 리소스
계속 배우는 방법
- 🎓 UiPath Academy: 무료 온라인 강좌 (한글 자막 지원)
- academy.uipath.com
- Foundation Training 추천
- 수료증 발급 가능
- 📖 UiPath Forum: 커뮤니티 질의응답
- forum.uipath.com
- 한국어 섹션 있음
- 📺 YouTube: "UiPath Tutorial" 검색
- 공식 UiPath 채널
- 다양한 실습 예제
- 🏆 인증: UiPath Certified Professional
- UiPathAssociate (초급)
- UiPathAdvancedRPADeveloper (중급)
- 💼 Marketplace: 무료/유료 컴포넌트 다운로드
- 미리 만들어진 액티비티 활용
- 생산성 향상
🎓 전체 과정 정리
3회차 동안 배운 모든 것:
1회차: 기초
- ✅ UiPath Studio 설치 및 환경 설정
- ✅ 변수, Message Box, Assign
- ✅ Open Application, Type Into
- ✅ 노트패드 자동화
2회차: 중급
- ✅ Flow Decision, While, For Each
- ✅ 텍스트 파일 읽고 쓰기
- ✅ 엑셀 자동화 (Read/Write Cell, Read Range)
- ✅ For Each Row, DataTable 처리
- ✅ Input Dialog
3회차: 고급
- ✅ 웹 자동화 (Use Application/Browser)
- ✅ 데이터 스크래핑 (Extract Table Data)
- ✅ 이메일 발송 (SMTP) 및 읽기 (IMAP)
- ✅ Try Catch, Finally, Retry Scope
- ✅ Workflow 분리, Arguments
- ✅ REFramework 개념
- ✅ 모범 사례 및 디버깅
- ✅ Orchestrator 소개
💪 최종 과제 - 통합 프로젝트
🏆 도전 과제: 완전 자동화 시스템 구축
시나리오: 온라인 쇼핑몰 주문 처리 자동화
- 이메일 확인
- Get IMAP로 신규 주문 메일 읽기
- 제목에 "신규주문"이 포함된 메일만 필터링
- 주문 정보 추출
- 메일 본문에서 주문번호, 상품명, 수량 추출
- Regex 또는 String Manipulation 활용
- 재고 확인
- 재고 관리 엑셀 파일 읽기
- 주문 상품의 재고 수량 확인
- 조건 처리
- 재고 충분 → 주문 확인 메일 발송
- 재고 부족 → 담당자에게 알림 메일
- 엑셀 업데이트
- 처리된 주문을 주문내역.xlsx에 기록
- 재고 수량 차감
- 에러 처리
- Try Catch로 모든 단계 보호
- 에러 발생 시 로그 기록
- 일일 리포트
- 처리 완료 후 요약 리포트 생성
- 관리자에게 이메일 발송
⚠️ 힌트:
- Workflow를 기능별로 분리하세요 (CheckEmail.xaml, ProcessOrder.xaml 등)
- Config 파일로 이메일 주소, 파일 경로 관리
- 로그를 상세히 남겨 디버깅 용이하게
🌟 마치며
🎉 축하합니다! 3회차 모든 과정을 완료하셨습니다!
이제 여러분은 UiPath로 다양한 업무 자동화를 구현할 수 있는 능력을 갖추셨습니다.
계속 실습하고 도전하세요. 자동화의 가능성은 무한합니다!
✨ 작은 자동화부터 시작하세요
🚀 매일 조금씩 개선하세요
💡 커뮤니티와 함께 성장하세요
🏆 실무에 바로 적용하세요
📬 질문이나 피드백이 있으신가요?
UiPath Forum의 한국어 섹션이나 커뮤니티를 활용하세요!
Happy Automation! 🤖✨
'AI' 카테고리의 다른 글
| 구글 Whisk 초급 가이드(AI 이미지 만들기) (0) | 2025.11.13 |
|---|---|
| 초보자를 위한 AI 프롬프트 작성법 (4) | 2025.11.12 |
| UiPath Studio 초보자 가이드 - 2회차 (0) | 2025.11.11 |
| UiPath Studio 초보자 가이드 - 1회차 (0) | 2025.11.11 |
| Tableau 고급 가이드 - 엑셀 데이터 분석 (3) | 2025.11.10 |