반응형
SMALL

메일송수신

메일에 로그인을 해서 확인하지 않아도 메일 내용을 가져올 수 있는 액티비티를 사용해보자.

0. 환경 설정 : pop3/IMAP/SMTP 설정

네이버 메일 들어가자. 내 메일함 옆에 보면 톱니바퀴 모양으로 환경설정이 있다. pop3/IMAP 설정을 클릭한다.

참고) 네이버로는 원래 보안상 되지 않는다. 나중에 회사에서 하는 자동화에 쓰이는 것. 프로젝트에서 화려한 시각화를 위해 사용하면 좋다..

SMTP : 간이 전자 우편 전송 프로토콜, 인터넷에서 이메일을 보내기 위해 사용되는 프로토콜이다.

IMAP : 응용 게층 인터넷 프로토콜, 원격 서버로부터 TCP / IP 연결을 통해 이메일을 가져오는데 사용된다.

 

둘 다 사용함으로 바꾸자. 이걸 어떻게 RPA에 연결해서 자동화를 할 수 있을까?

IMAP로 메일 읽기

1. Get password : 암호화 액티비티

얘는 password가 암호화가 안되기 때문에 암호화부터 한다.

변수 선언해서 password 넣어준다.

password 변수 선언

2.  Get IMAP Mail Messages : 메일 불러오기

Get IMAP Mail Messages 속성에 이메일, 암호, Top3으로 바꾸고 메세지에 변수선언하고 포트와 서버도 넣자.

이거 서버랑 포트에 붙여넣기
속성 적기

 

3. for each 써서 반복문 써서 읽어오기

for each 속성
typeArgument의 형식 선택 : 이걸 자료형으로 한다.

4. 출력 : write Line

본문에 write Line 한 후 subject 해준다.

실행하면 상위 3개 나온다.

SMTP로 메일 보내기

1. Get password : 암호 변수 선언

2. Send SMTP Mail Message : 메시지 보내기

속성이 중요하다.

네이버 설정에서 들어가서 서버와 포트번호를 확인한다.

서버, 포트 확인
속성 채우기

실행하면, 메일이 잘 도착했다.

메일은 프로젝트 앞뒤에 넣어주면 좋다.


데이터 스크래핑(고급) - 네이버 뉴스 최신순으로 첫페이지 스크래핑하기

기사 리스트 뽑기

건강식품 쳐서 데이터 스크래핑을 누른다.

언론사들만 클릭해서 뽑아본다.
열 이름 쓰기
잘 뽑힌다.

다른 데이터까지 뽑기 원할 경우 상호 연결된 데이터 추출을 클릭한다.

이름만 뽑아보자.

뉴스 헤드라인만 선택
테이블 형태로 잘 뽑혔다.

이런식으로 스크래핑해서 엑셀로 내보내거나 할 수 있다.


DB 연결

Ui Path Database Activites 사용하면 된다. -> 다운로드하기

설치하기
이런게 생긴다

ODBC라고, MS에서 만든 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격이다. 프로그램 내에사 ODBC를 사용하면 여러종류의 데이터 베이스에 쉽게 접근할 수 있다.

32g 파일 다운로드 받아서 오라클 클라이언트 설치하기. 64비트 안될 수 있으니 주의! 우리는 이걸로 ㅇODBC Driver를 설치할 것이다.

사용자 정의 > ODBC 설치

폴더에 dbhome_1과 client_1이 있다.

파일 들어가서 D:\app\Kosmo_02\product\11.2.0\dbhome_1\NETWORK\ADMIN 경로에 있는 admin을 복사해서 새로 설치한 client_1에 넣어준다.

이렇게 붙여넣어줌. ( D:\app\Kosmo_02\product\11.2.0\client_1\network)

시작메뉴에 odbc 검색하자.

빈칸에 넣어야하는데 확인은 admin에서 tnsnames에서 확인한다.

orcl 맞을껄?
test Connection 해보자.
잘 연결되었단다.
잘 등록되었다.

이름 잘 기억해두도록하자.

이제 Ui Path로 이동한다.

1. Connect

Connect 하고 아까 설치한 ODBC를 찾아서 클릭한다.

데이터 소스 설정하기
오라클 계정 로그인

확인하고 속성에 변수 정의하기.

결과값 받을 변수 정의

앞으로 Connection 이라는 변수에 오라클 DT가 들어올 것이다. 이거는 연결하는 통로인 것. DT 형태로 오지는 않는다.

2. execute Query

execute Query 써서 데이터베이스 select문 써주기


  
"select * from Board"

DT로 데이터테이블도 정의해줌. 그래야 Connection으로 들어온 변수가 DT 형태로 들어온다.

execute Query 속성 설정

2. Disconnect

커넥션을 끊어준다.

속성에 Connection 연결해준다.

3. Output Data Table

csv 형식으로 문자열에 DT를 쓴다. 즉, DT를 받아온 것을 Str로 바꿔오는 것. 그래야 출력이 되니까.

변수도 꼭 정의해주자.

4. Write Line

str로 받아온 값들을 출력해준다. 그럼 오라클에 있는 board 테이블의 데이터가 String 형태로 출력창에 출력된다.

전체 연결 흐름
전체 연결 흐름 출력값

 

반응형
LIST
반응형
SMALL

RPA로 디렉토리 관리하기

디렉토리 관리도 가능하다. 흔히 폴더를 생성하고, 지우고, 파일을 이동시키고, 복사하는 등의 기능을 디렉토리 관리라고 부른다.

1. 폴더 만들기 : Create Folder

지정된 위치에 폴더를 만든다.

폴더 생성

2. 파일 / 폴더 삭제 : Delete

파일 또는 폴더를 삭제한다. 위치는 속성에 Path에 지정한다.

3. 파일 복사 : Copy File

파일을 복사한다. 위치의 시작지점(원래 있는 곳)과 종료지점(복사할 곳)을 설정한다. 이름은 바꾸고 내용은 그대로 복사할 수도 있다.

4. 경로 확인 : Path Exists

지정된 경로가 있는지 확인한다. 주로 파일 또는 폴더가 있는지 확인할 때 쓴다. boolean 값으로 출력된다.

파일이 있으면 메시지 박스를 띄워보자
파일이 있다.


디렉토리(파일, 폴더) 액티비티

1. Copy File : 다른 경로로 파일 복사

2. Create File : 파일 생성

3. Create Floder : 폴더 생성

4. Delete : 파일/폴더 삭제

5. Move File : 파일 이동

6. Compress/Zip Files : 파일/폴더 압축

7, Extract/Unzip Files : 파일/폴더 압축 해제

8. Path Exists : 해당 경로에 파일/폴더가 있는지 검사 -> if(조건문)과 같이 쓴다.(Boolean)

9. DeirectoryInfo.GetFiles : 특정 폴더에 있는 모든 파일 읽기 


스니펫

기본적으로 여러 샘플 workflow 와 Snippets이 포함되어 자동화에서 사용할 수 있다.

5. 그 폴더에는 뭐가 있을까? For Each File in Folder

선택한 경로에 있는 파일들의 경로를 출력해준다.

for each File in Folder 스니펫
실행하면
경로 선택
바탕화면에 있는 파일들의 경로가 출력되었다.

SelectFolder를 원하는 경로로 바꾸면 경로를 선택하지 않아도 자동으로 출력해준다.

경로 자동화

 

셀렉트박스(select)와 셀렉터(Selector)

여기 셀렉트박스가 있다. RPA에서 셀렉트박스를 자동화를 하려면, 셀렉트박스를 한번 클릭하고, 원하는 항목을 또한번 클릭해야 한다. 이걸 자동화를 하려면 어떻게 해야할까?

두번 클릭해야할까?

셀렉터(Selector)는 Ui에 대한 속성값을 뽑는다. XML 코드이며 각각에 대한 tag를 가지고 있다. 
이 태그들 중 특정 부분을 변수처리를 해서 반복문 안에 넣어서 한줄씩 선택하는 방법을 쓸 수 있다.

1. 변수처리 : Assign

5월, 6월, 7월만 선택하는 것으로 하자. 배열에 넣어준다.

변수처리

2. 반복문 : For Each

반복문을 이용해서 클릭 기능을 부여해준다. 우리는 Selector의 태그를 바꿔줄 것이기 때문에 태그를 잘 맞춰서 클릭해주자.

반복문

3. 셀렉터(Selector) 속성 변경: Target - Selector 변경

셀렉터를 확인해보자.

이 값들을 변화시켜줄꺼다.

우리는 For Each 문에서 우리가 보고싶은 월을 담은 배열, Ary_Month를 'month'라는 변수에 담아 반복문 안에 넣었다. 그 month로 값이 변화한다면 우리가 원하던 것처럼 자동으로 바뀌지 않을까?

month로 바꾸기

단, 변수를 {{ }} 안에 담아서 선언한다.

Selector 속성에 들어가서 String 타입들의 태그를 고칠 수 있다. aaname의 경우 String 이므로, ' " +month+ " ' 처럼 형식을 바꿔서 사용할 수도 있다.

 

자동으로 잘 된다.

 

데이터테이블 액티비티 정리

1. Add Data Coulmn : 칼럼 추가 (중간에 추가는 안된다. 뒤쪽에 추가하는 것.)

-> 추가할 때 ColumnName에 칼럼명을 적으면 된다.

2. Clear Data Table : 데이터 테이블 초기화(칼럼명은 남겨두고 데이터만 초기화한다)

3. Generate Data Table (String -> DataTable로 변환)

4. output Data Table (DataTable -> String로 변환)

5. Merge Data Table (밑으로 데이터 테이블 누적)

-> 옆으로 쌓는 것은 없다. 옆으로 쌓는 것은 칼럼을 추가해서 넣는 것 뿐

6. join Data Table (스키마에 따라 병합 : 오른쪽, 왼쪽, 안)

-> SQL의 join 참고

7. Sort Data Table (데이터테이블 정렬 : 오름차순(ASC), 내림차순(DESC))

반응형
LIST
반응형
SMALL

복습 : 한국전력공사 용어사전에서 검색 후 텍스트 출력하기

0. Main.xaml > Flowchart 생성 > Sequence 생성

1. 브라우저 열기 : (Assign 변수선언) - Open Browser - [ Maximize Window - Delay ]

크롬 설정 빼먹지 말고 할 것!

보통 URL이나 아이디/비밀번호 입력하는 것들은 변수처리 해놓는게 맞다!

브라우저 열기

2. 카테고리 클릭 : Attach Browser - [ Click ] - Delay

한국전력공사(main page) > [지식센터] > [전력용어] > [KEPCO 용어사전]

3. 선택박스 고르기 : Click(선택박스) - Select item - 원하는 것 선택

4. 텍스트 입력 후 검색 : Type Into - [ 변수선언value 값 입력 ] - Click

변수 선언 shift + k

5. 텍스트 가져오기 : Click - Get Text(가져오고) - Write Line(출력)

가져올 내용을 변수선언 후 담아서 출력했다.


브라우저 액티비티

1. 브라우저 이동하기 : Navigate to

해당 사이트로 이동합니다. 빈칸에 웹페이지 주소를 적습니다.

2. 탭 닫기 : Close Tab

브라우저를 닫는다. 이동과 닫는 것은 함께 쓸 수 없다. 다른 attach로 해야한다.

자동으로 이동하고 꺼진다.


스크린 스크랩핑

- 미리보기 기능을 지원하지만 write Line은 불가

- 리본메뉴를 쓰면 자동으로 Attach Browser가 생성된다. -> 따로 안써도 됨

- 스크림 스크랩핑의 메서드

  • Native : 원본 모양 그대로(줄바꿈 포함)
  • Full Text (=Get Text 와 기능동일) : 텍스트 전부, 필요없는 텍스트까지
  • OCR -> 이미지 글자 추출

스크래핑 메소드
스크래핑 메소드 종류

- 스크래핑을 할 때에 고려할 점

  1. 공백은 어떻게 하는지?
  2. 이미지만 가져올껀지
  3. 텍스트만 추출할건지? -> Full text는 여러 요소가 섞여있기 때문.

- 단, 숨겨진 항목 무시하기 누르면 아래 텍스트는 생략

- Full text는 key값이 함께 와서 키-값 매칭해서 가져오기 편하다.

- 개발자들은 이 이후 진행할 '데이터 가공' 단계에 어떠한 데이터가 필요할지 판단 후 가져온다.

 

1. 원하는 영역 선택 : 리본메뉴 - 스크린 스크래핑 - 원하는 영역 선택

이부분을 스크래핑 해볼 것이다.
글씨만 잘 추출되었다.

Native로 받아오자. 글씨가 공백 없이 깔끔하게 받아와진다.

native로 받아온 것

2. 텍스트 출력 : write Line

가져온 Text 이름이 Div로 되어있으므로 그대로 출력해주자
잘 출력되었다.


[ 에러 ] RemoteException wrapping System.Runtime.InteropServices.COMException 메시지 : 캡처 오류입니다. 

에러 화면

스크린 스크래핑은 보이는 화면에서 그 위치를 그대로 가져온다.

따라서 실행시킬 때 스크래핑 하는 스크린을 띄워놔야한다.

에러가 난 이유는 스크래핑 창이 아닌 다른 탭을 띄워놨기 때문이다.



형변환

해당 데이터의 타입을 바꿔주는 것. 우리가 받아온 데이터의 비교 및 연산을 하기 위해서 사용된다. 연산을 위해서는 기본적으로 숫자여야 한다. 따라서 형변환이 필요하다.

+ 보통 데이터를 추출하면 Generic value 형식으로 뽑힌다. (Generic value : 모든 데이터를 다 포함하는 상위 형식)

ex) 스크린 스크래핑, get text로 받아온 String 등

++ 현장에서 count 쓸 때에는 int를 쓰지만 보통 Double를 쓴다. 모든 숫자는 대부분 Double로 설정하자. int32보다 Double이 범위가 훨씬 크다.

+++형변환 사용 예시 : 재무,회계,인사(HR) 관련 프로젝트를 진행할 때 (= 돈관련) 이때는 형변환을 반드시 사용한다.

 

text 형변환은 이미 배웠다. : .ToString 을 사용하면 text를 형변환 한다. 텍스트 가공(뒤에 나올 String 메소드 사용) 시에 사용한다.

숫자를 형변환 할 때는 cdbl(generic ~~) 을 사용한다. 연산을 위해 사용된다.

 

1. 브라우저에서 환율 긁어오기 : Attach Browser - [ Get text - Write Line - If ]

환율을 긁어왔지만 이건 String으로 가져온 것이다. 따라서 비교연산자를 사용하기 위해 cdbl(변수명) 을 사용한다.

String을 cdbl로 숫자형으로 바꿔준다.


파일 디렉토리

원래 it에는 디렉토리라는 함수가 있다. System.IO 라는 함수들이 있는데, 파일, 폴더 등을 관리를 해주는 함수디렉토리라고 한다. 

예를 들면 폴더에서 폴더(또는 파일)를 이동할 때에는 \(역슬래쉬)를 사용한다. 그리고 파일은 뒤에는 항상 확장자명이 함께 붙는다. 디렉토리는 항상 파일확장자명을 가지고 있다. 

현재 우리가 가지고 있는 파일의 경로는 다음과 같다.

"C:\RPA_Guidebook\Session5_UI 데이터 추출하기\Result\Expert.xlsx"

이러한 경로를 Full Path, 전체경로라고 한다. 항상 뭔가를 실행할때는 전체 경로 뒤에 파일과 파일 확장자까지 붙여서 (전체 경로를 써서) 실행한다.  윈도우에서는 파일 다운로드 하거나, 복사 등등을 많이 쓴다. 그때 Full Path를 많이 사용한다.

이런식으로 전체경로를 이용해서 파일을 저장한다.

[주의] 파일 저장 위치 확인

파일 다운로드 받을 때 각 파일의 저장 위치를 지정해주는 것이 중요하다. 항상 다운로드 폴더에 저장 크롬에서 설정 > 고급에서 체킹 꼭 해준다. 현장에 나가서도 꼭 바꿔줘야한다.

이래야 경로를 클릭클릭 안해도 알아서 그 위치에 저장됨


[ 파일 확장자명 총정리 ]

1. 엑셀 : .xlsx(기본) .xls

2. 파워포인트 : .pptx

3. 워드 : .doc /.docs

4. PDF : .pdf

5. 텍스트파일 : .txt

6. csv 파일 : .csv

7. zip 파일 : .zip

8. 그림 파일 : .jpg / .png


+ 과제 157p

여기까지 데이터 추출 단계 끝


참고 꿀팁

1. target 속성

target 옆에 +를 누르면 Timeout를 설정할 수 있다.

selector는 xml 의 필요한 부분을 가져온 것.

NextLinkSelector는 다음페이지 넘어가는 버튼 표시해주는 것.

timeout 설정하면 시간을 줄일 수 있다. nextLinkSelector까지 기다려주는 것.

2. 실행키 : window + r 

3. 파란색 느낌표 : 에러표시

느낌표가 떠서 에러가 나면 가장 아래꺼 보면 뭐가 문제인지 알 수 있다. 가장 아래 있는 파란 느낌표가 원인데이터이므로 거기를 살펴보자.

4. 배열과 컬렉션

배열은 크기선언이 필수 -> 크기 선언 후 assign을 해서 값을 넣어줌

컬렉션 타입의 list의 경우 자동으로 카운트 되며 assign이 아닌 Add to Collection을 사용한다.

둘다 For Each를 사용해서 한다.

변수선언 : list
변수선언 시 String 설정을 해줘야한다.


셀렉터(Selector)

UI 속성값을 저장한 표준 XML 코드. 현재 표시한 화면에 대한 정보를 표시한 것이다.

네이버 금융에서 버튼을 누르는 시퀀스의 selector

여기서 강조표시를 누르면,

이런식으로 나타내고 있는 화면을 강조표시 해준다.

Selector는 에러메시지 확인할 때 유용하다.

1. 사이트의 화면이 변경되었을 경우

2. 사이트 자체가 없어졌을 경우

3. 창 크기가 달라 인식을 못할 경우

이렇게 ui가 변경되거나 없어진 경우 Selector를 이용하면 확인할 수 있다.

유효성 검사 상태

유효성 검사 상태

유효성 검사는 각 색깔별로 UI의 상태를 확인할 수 있다.

  • 초록 : 해당 UI가 화면에 있다.
  • 노랑 : 아직 실행이 되지 않았거나 아직 알 수 없는 상태. 눌러보면 초록인지 빨강인지 알 수 있다.
  • 빨강 : 해당 UI가 화면에 없다.

 

와일드카드(*)

메모장을 틀어놓고 자동으로 입력되는 간단한 시퀀스를 만든다.

자동으로 Hello RPA가 입력된다.

이때 Selector를 살펴보면 다음과 같다.

attach window의 selector

이제 이미 실행한 시퀀스를 한번더, 총 두 번 실행한다.

에러 발생

에러가 난다. 왜?

메모장을 살펴보자.

이름이 바뀌었다. * 표시가 붙는다.(수정되고 있음을 표시) 아까 attach Window로 지정한 창이 아니게 된 것.

즉, 제목이 달라서 에러가 남.

이름에 수정중인 표시가 붙는다.

 

이럴 때 와일드카드가 사용된다.


[ 와일드카드 ]

하나 또는 둘 이상의 문자를 대체하는 기호. 주로 Selector에서 속성을 변경할 때 사용된다.

? : 문자 1개를 대체한다.

* : 0개 이상의 문자를 대체한다.

즉, 자주 변경되는 UI(이름, 날짜 등이 포함된 제목)에 대해 에러가 발생하지 않도록 처리해준다.


와일드카드를 이용해서 Selector의 제목을 변경해주어서 에러를 없애보자.

이부분을 전부 와일드카드로 대체해주자.

 

다시한번 실행해보면,

잘 입력된다.

->수정을 뜻하는 * 표시랑 다른거다.

언제 와일드카드를 쓸까?

공통모듈(프로세스)를 만들 때 사용한다.

  • 사이트 검색창에 검색어를 입력하는 프로세스
  • 사이트 이동하는 프로세스(Navigate to)

와일드카드는 attach browser 또는 attach windowtitle 또는 name 태그를 수정할 때 쓰인다.

반응형
LIST
반응형
SMALL

+ Recent posts

반응형
LIST