본문 바로가기
[ RPA ]

[RPA] 기능(1) - 조건문 / 로그인 기능 만들기 / 데이터 스크래핑

by 히앤님 2020. 11. 6.
반응형
SMALL

▼필기노트

더보기

RPA = 솔루션(소프트웨어제품) : UiPath => 설치
            + Window 환경에서만 설치 가능

RPA
1. 설계 ( 로직 설계 )
 알아보기 쉽도록 나누어서 설계
UI 작업 = 그림
개발 = > 운영, 유지보수를 고려하여 개발

RPA Infra
제품 3가지
Studio -> 개발
Robot => 수행

<RPA 개발 시 기억할점>
1. 텍스트는 항상 더블 쿼트 사용
2. 숫자는 그냥 사용

<변수 사용 규칙>
* UiPath : Microsoft의 vb.net(-> c#) 언어 문법을 준수
1. 첫글자는 대문자, 구분되는 단어의 첫글자는 대문자
2. (규칙)   변수타입명   _    이름
             ㄴ 약어  ㄴ언더바 ㄴ 풀네임
3. 변수유형(약어)
1) String 문자열 => Str
2) Int32(숫자형) => Int
3) Double(실수형) => Dbl
4) Object(객체) => Obj
5) Boolean => Bln
6) Datatable => DT
7) Array of [T] => Ary, Arr 
               ㄴ [T] : 변수타입
8) List of [T] (Collection) => List
   ㄴ [T] : 변수타입
9) Dictionary of [T][T] (Collection) => Dic
            ㄴ [T] : 변수타입
10) GenericValue(모든 타입) => Generic

ex) 이름 변수 : Str_Name
    숫자를 세는 변수 : Int_Count
    과일을 담는 배열 : Ary_Fruit
ex) 과일이름 변수 : Str_FruitName

4. 변수 초기화
★ = > 시작할때 초기화를 하고 시작해야함
1) String 문자열 => ""
2) Int32(숫자형) => 0     ★ 
3) Double(실수형) => 0  ★ 
4) Object(객체) => ????
5) Boolean => True or False
6) Datatable => new Datatable()  ★ 
7) Array of [T] => {} 
   배열크기선언 : new String(100){} => new [T](Index){}

8) List of [T] (Collection) => new List(of [T])  ★ ★ ★ 
               ex) 타입이 Str 이면 Str을 적으면 됨
9) Dictionary of [T][T] (Collection) => new Dictionary(of [T],[T])
    ★ ★ ★          

10) GenericValue(모든 타입) => ????

※ 데이터가 없음 : Nothing(파란색으로 나온다)

5. 변수 단축키
ⓐ 초성을 치면 변수가 자동으로 보임
ⓑ 초성을 치고 Ctrl+Space를 누르면 변수가 자동으로 보임
ⓒ 빈칸에 Ctrl+K를 누르면 변수가 생성된다.

6. 액티비티(개발도구 정리)
1) Sequence : 틀(일자형 틀)
2) Flowchart : 틀(전체 구조)
3) Assign : 변수에 값을 할당할 때 사용
4) Write Line : 로그(값) 찍을 때 => 무조건 String 형태로만 출력가능
   ex) Int_Count.ToString

drag and drop 이 안될 때,
ESC 버튼을 누른 상태에서 마우스 왼쪽 오른쪽 번갈아가며 클릭

RPA 실행 전에 점검사항.

<환경 설정>

1. 해상도 : 1920 * 1080

2. 창 크기 : 항상 최대화

3. 창 배율 : 100% or 125%

 

1. 데이터 하나 추출 -> Get Text

2. 데이터 전체 추출 -> DT

리본메뉴

-> 스크린 스크래핑->

======> 컴퓨터가 자동으로 변수 생성 ===> 변형(규칙에 맞게)

-> 데이터 스크래핑->

===> 한글로 하면 에러 남 -> 변수 공백 X

====> 두번 작업해야함 ... 1) 변수 수정 2) 출력 수정


기능을 구현하기 위해 기본적으로 Sequence 만들고 그 안에 여러가지 액션을 넣는다.

화살표로 연결해주기 위해서 우클릭 - 시작노드로 연결하기

 

# 만약 드래그앤 드롭이 안된다면?

더보기

-> ESC 버튼 누른 상태로 마우스 좌클릭,우클릭 연타하기.

기본적으로 vb.net의 문법을 준수한다. 

1. if문

이제 if문을 사용해보자.

1. 하단에 변수 선언 후 Assign으로 변수에 값 넣기

2. 만약 Int_Number가 0이면

3. 맞으면 "Yes" 틀리면 "No" 출력

 

# 만약 중첩 if문을 쓰고 싶다면?

if문 안에 if문을 넣는다. (근데 너무 두꺼워져서 2개가 보통최대...) UI작업에서 보기 힘들기 때문에 유지보수를 위해 다른 방법을 사용한다.

이렇게 안쓴다

# 조건문 연산자

같다 =

다르다 <>  // != 아니다.

and or not

2. Flow Decision

if문과 기능은 동일하나, squence 내에서는 사용이 불가하다.

조건문처럼 쓰기 위함이 아니라 프로세스를 분기하기 위해 사용된다. (ex.둘 중에 하나 선택해서 경로를 지정할 때)

3. 반복문

RPA는 사무를 자동화하는데에 많이 사용된다. 특히, 오피스의 excel 등에서 데이터를 추출하고 관리, 응용하는데에 많이 사용된다. (빅데이터와 많이 연관이 되어있는 부분)

RPA에서 반복문의 역할은 "데이터를 처음부터 끝까지 검증" 한다.

RPA에서 데이터는 엑셀 등에서 크롤링하거나 수집해온 데이터이다. 따라서 변수는 배열데이터테이블의 형태일 경우가 많다.

While문보다 For문이 더 중요하다.

 

데이터를 다루는 순서는 다음과 같다.

1. 데이터 추출(Session4,5) - 레코딩

2. 데이터 가공(Session7)

3. 데이터 출력(저장, Session8)

이러한 순서로 데이터를 설계하고, 설계에 맞춰서 개발한다.

 

레코딩

프로세스를 순서대로 촬영한다. activity를 통해서 만든다. 레코딩을 눌러서 웹이든 뭐든 원하는 기능을 차례대로 선택한다. 그 후에 레코드를 끝내고 저장한다. -> 실행했을 때 첫 단계로 가면 자동으로 다음단계가 선택된다.

굉장히 비주얼적이고 직관적이나, 개발자들은 이렇게 안쓰고 거의 화면을 떠서 쓴다...(왜..?)

사용시 반드시 1. 해당 창을 인식하고 2. 세부작업을 클릭 또는 타이핑 해야 한다. 

 

+ RPA로 게임 메크로는 불가능하다.

+ Attach 종류는 window와 Browser가 있는데 우리는 브라우저를 많이 다룰 예정.

+ 레코딩 작업시 주의사항 ) 1. 해당창을 반드시 먼저 잡는다.(Attach Browser, Attach Window) 2. 세부작업을 진행한다.

+ 레코딩 작업시 유용한 단축키 ) ESC : 작업중단 F2 : 3초간 멈췄다가(마우스를 자유롭게 움직일 수 있다) 다시 실행한다.

+ 액티비티 정리 ) Click : 마우스역할 / Type Into : 키보드 역할(+Send HotKey : 키보드의 키) / Get Password : 비밀번호를 암호화해줌

+ 환경세팅 ) RPA는 여러가지 환경에 영향을 받는다. 에러 방지를 위해 미리 기준을 두자. 1. 해상도 : 1920 X 1080으로 맞추자. 2. 창크기는 항상 최대화로 놓자.(최소화로 작업하지 않는다.) 3. 창배율 : 100% 또는 125%으로 통일.


www.acme-test.uipath.com/home로 접속해서 UiPath를 연습해보자.

 

1. 입력창에 텍스트 자동으로 입력하기

user options 에서 test data를 reset해주자.

이제 시퀀스를 만들어서 자동로그인 되게 해보자.

1. 시퀀스 만들고 Attach Browser - 화면에 클릭 - 로그인창 클릭

2. Type Into를 키보드 버전을 가져와서 Do에 넣자. 입력해야하니까. 

cf) send Hotkey : 키 조합을 추가할 수 있다.

send Hotkey

3. checkBefore Typing을 해서 먼저 커서가 들어간 뒤 입력되게 한다.(에러방지)

4. 암호도 동일하게 하자.

암호도 따로 쓰지만 속성에서 ctrl + k를 누른 뒤 변수로 설정해주자. 암호에는 내 암호를 써준다.

변수 이름 넣어서 암호가 들어가게 해주고

실행하면 자동으로 실행되면서 웹페이지에 내가 입력한 값들이 자동으로 들어간다.

자동으로 입력된다.

 

2. 로그인 자동화 해보기

액티비티 검색에 브라우저를 쓰면 여러 기능들이 뜬다.

1) 브라우저 열기 (기능 : 브라우저 주소로 접속해서 창 최대로 열고 딜레이 5초)

우리는 open browser를 하고 속성을 크롬으로 선택한다.

크롬 선택

브라우저가 열리면 그걸 최대로 키우고 딜레이를 걸어주자.

 

딜레이 속성(5초)

1번에서 했던 email 입력과 password 입력을 추가하자.

EmptyField : 텍스트 쓰기 전에 원래 쓰여있던 글씨를 전부 비우기

EmptyField  

클릭을 추가한다.

 

자동으로 로그인이 완성되었다.


액티비티를 쓰는 것은 그렇게 어렵지 않다. 익숙해지기만 하면 다 잘 한다.

포인트는 어떻게 쓰나, 그 과정 자체를 숙지하는 것. 순서를 지켜야한다. 깔끔하게 하기 위한 순서를 지켜야한다.

1. <화면에 표시>를 누르고 화면부터 클릭

2. 속성값 편집

3. 데이터를 입력

별 것 아닌 것 같지만 이중에 빼먹는 것도 있고, 실행되는 과정에 대한 이해도를 가져야 한다. flow를 중요시하고 클린한 로직을 만들자.

Delay : 가장 기본적인 에러 처리. 지연의 의미가 아니다. 보통 RPA 현장에서는 속도의 문제를 가지고 있다. 네트워크 속도도 느리고, 실행도 느리다. 브라우저를 open 하거나, 사이트에서 주소를 변경할 경우(또는 화면을 변경할 경우) 에 딜레이를 사용한다. RPA에서는 속도보다는 안정성이다. 사이트의 속도를 못따라가서 에러가 나는 경우를 방지 해야 한다. 즉, '쉼표"라고 생각하면 좋다. 우리가 이 툴을 사용하면서 결과물을 안정적으로 만드는게 최우선 목표다.


1. 하나의 데이터 추출하기 : get_text

데이터를 추출할 때에는 두가지 방법이 있다. 1. 데이터 하나만 추출할 경우 : Get Text 2. 데이터 전체를 추출할 경우 : DT 사용

네이버 화면에서 증권을 눌러서 네이버 증권으로 이동한다.

주의 !! 브라우저는 화면단위로 나눠서 설계한다!

네이버 증권 화면은 새로운 URL을 가진 새로운 브라우저다. naver 안에서 브라우저를 추가하는 것이 아닌, 새로운 브라우저를 Attach 해주어야 한다.(안에다 하면 에러난다.) 

인터넷 브라우저 열면 네이버가 켜지게 하자.

오픈 브라우저 크롬설정

증권을 클릭한다.(다른 주소이므로 새로운 브라우저를 붙여야함.)

증권 클릭

증권에서 시장지표로 가자.

시장지표 클리

시장지표에서 현재 USD 달러의 살때 가격을 가져오고 싶다.

변수를 설정하고 get_Text를 통해 값을 가져온다. 

주의할 점은 get_Text 이후 write Line을 통해 수입한 text를 출력해줘야 한다.

설정한 변수를 값에 넣어줘야한다!

잘 출력된다.

이런식으로 크롤링도 가능하다.

 

2. 데이터 전체 추출하기 : 데이터 스크랩핑

UiPath 상단에 있는 아이콘들을 리본메뉴라고 부른다. 데이터 스크래핑도 이쪽에 있다.

위와 동일하게 진행 후에, 테이블 형태로 데이터를 스크래핑 해보자.

데이터 스크래핑 클릭

테이블의 컬럼을 클릭하면 데이터 테이블로 받아올 수 있다.(페이지 번호가 없을 시 아니오 누르기)

스크래핑이 잘 되었다.

하지만 실행하면 에러난다.

왜? 변수에 공백이 있어서 에러가 발생한다.

DT_Extract를 추가한다.

변수추가하고

변수 이름 변경
테이블 속성도 변경해준다.

여기까지 스크래핑은 됐다.

 

우리는 이걸 엑셀로 저장하려고 한다.

새로운 시퀀스를 만들고 다음 단계로 연결해준다.

새로운 시퀀스 생성

시퀀스 - excel application Scope - 경로 설정

엑셀 저기에 저장할 예정

Write Range 로 뭘 저장할건지 말한다. 

만약 변수명이 안들어온다면 아까 앞단에서 변수 범위를 flowchart로 안한것!

아까 그 경로로 들어가서 보면 데이터가 입력 되어있다.

근데 컬럼이 없네?

컬럼을 추가하려면

write Range에서 headers를 추가해준다.

컬럼 추가

다시 런 해주면,

아까 이미 만들어놓은게 있어서 덮어쓰기가 안된다.

그럴 땐 다시 처음부터 작업하거나, 엑셀 내용을 전부 지우고 다시 하면 된다.

엑셀 내용 전부 지우고 다시 실행한 결과

 

반응형
LIST

댓글