본문 바로가기
AI

UiPath Studio 초보자 가이드 - 3/3회차

by 에버리치60 2025. 11. 11.

UiPath Studio 초보자 가이드 - 3회차

⚡ UiPath Studio 초보자 가이드

3회차 - 웹 자동화, 이메일, 에러 처리, 고급 기법
📚 1~2회차 복습: 기본 액티비티, 조건문, 반복문, 파일/엑셀 작업
🎯 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 (기존 내용 지우기)
  • "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"
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로 에러 알림
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
  • 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>

🎯 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를 사용하나?

사용 권장 사용 불필요
  • 대량 데이터 처리
  • 엔터프라이즈 환경
  • Orchestrator Queue 사용
  • 복잡한 에러 처리 필요
  • 팀 협업 프로젝트
  • 간단한 자동화
  • 일회성 작업
  • 개인 학습 프로젝트
  • 빠른 프로토타입

🚀 6단계: 실전 종합 프로젝트

프로젝트: 자동 일일 리포트 시스템

엑셀 데이터를 읽어서 웹에서 정보 조회 후 이메일로 발송하는 완전 자동화

종합 실습

프로젝트 구현 단계

  1. 엑셀에서 처리할 목록 읽기
    • 고객명, 주문번호 등
    • Read Range로 DataTable에 저장
  2. For Each Row로 각 항목 처리
    • Try Catch로 에러 처리
    • Retry Scope로 재시도 로직
  3. 웹사이트에서 정보 조회
    • Use Application/Browser
    • Type Into로 검색
    • Get Text로 결과 추출
  4. 결과를 새로운 엑셀에 저장
    • Write Cell 또는 Write Range
    • 날짜별 파일명 생성
  5. 완료 리포트 이메일 발송
    • 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 소개

💪 최종 과제 - 통합 프로젝트

🏆 도전 과제: 완전 자동화 시스템 구축

시나리오: 온라인 쇼핑몰 주문 처리 자동화

  1. 이메일 확인
    • Get IMAP로 신규 주문 메일 읽기
    • 제목에 "신규주문"이 포함된 메일만 필터링
  2. 주문 정보 추출
    • 메일 본문에서 주문번호, 상품명, 수량 추출
    • Regex 또는 String Manipulation 활용
  3. 재고 확인
    • 재고 관리 엑셀 파일 읽기
    • 주문 상품의 재고 수량 확인
  4. 조건 처리
    • 재고 충분 → 주문 확인 메일 발송
    • 재고 부족 → 담당자에게 알림 메일
  5. 엑셀 업데이트
    • 처리된 주문을 주문내역.xlsx에 기록
    • 재고 수량 차감
  6. 에러 처리
    • Try Catch로 모든 단계 보호
    • 에러 발생 시 로그 기록
  7. 일일 리포트
    • 처리 완료 후 요약 리포트 생성
    • 관리자에게 이메일 발송
⚠️ 힌트:
  • Workflow를 기능별로 분리하세요 (CheckEmail.xaml, ProcessOrder.xaml 등)
  • Config 파일로 이메일 주소, 파일 경로 관리
  • 로그를 상세히 남겨 디버깅 용이하게

🌟 마치며

🎉 축하합니다! 3회차 모든 과정을 완료하셨습니다!

이제 여러분은 UiPath로 다양한 업무 자동화를 구현할 수 있는 능력을 갖추셨습니다.
계속 실습하고 도전하세요. 자동화의 가능성은 무한합니다!

✨ 작은 자동화부터 시작하세요

🚀 매일 조금씩 개선하세요

💡 커뮤니티와 함께 성장하세요

🏆 실무에 바로 적용하세요

📬 질문이나 피드백이 있으신가요?

UiPath Forum의 한국어 섹션이나 커뮤니티를 활용하세요!

Happy Automation! 🤖✨