0. 들어가는 말

 

UiPath academy의 강좌는 영어로 되어있어서 영어랑 친하지 않은 분들은 불편할 수 있다는 생각이 들었습니다. 또한 정리를 해 보며 들었던 내용을 흘리지 않고 한번이라도 글로 옮겨보는 작업을 해 보고자 카테고리까지 만들어 UiPath Academy에서 강좌로 풀었던 내용들을 정리해보고자 합니다.

 

그 중 자동화 작업에서 가장 기본이라고 할 수도 있을 Selector에 대해서 정리해보겠습니다.

 

대부분의 내용은 번역기를 통해서 UiPath Academy에 작성된 글을 옮겨오되 필요한 내용을 정리하며, UiPath Academy 원문 또는 번역 내용은 모두 남색(#1A5490)으로 작성하겠습니다. 또한 자동번역 내용이 정말 많이 훌륭해졌지만 제 표현과 맞지 않거나 어렵거나 하면 풀어쓰고 변경하여 일부 수정하여 작업하였습니다. 특히 용어에 대한 부분은 영어를 선호하지 않아도 대체가 불가능하거나 한국어로 번역하여 의사소통이 더 어려워지는 경우에 한하여는 번역하지 않은 상태로 주요 용어에 대해 작성하였습니다.

 

Color Test

Color Test

Color Test

 

 

1. Selector 장에서 다룰 내용 (Overview)

 

이 Selector 장에서는 먼저 선택기의 기본 개념을 소개합니다. 계속해서 UI 탐색기의 다양한 프레임 워크, 속성 탐색기, 선택기 유형 및 사용 위치, 어려운 상황에 처할 때 선택기를 미세 조정하는 방법과 같은보다 심도 깊은 주제를 다룰 것입니다.

 

 

학습 목표

 

이 과정이 끝나면 다음을 수행 할 수 있습니다.

 

1> Selector 가 무엇이며 어떻게 작동하는지 설명.

2> 자동화 할 때 올바른 Selector 유형 및 설정을 선택.

3> 사용자 인터페이스 및 요소 탐색 수행 방법을 설명.

4> 요소 조작 정밀도를 향상시키기 위해 Selector를 미세 조정.

 

 

2. Selector란 (Selectors 소개)

 

Selector란 무엇입니까?


UiPath Studio의 Selector는 XML 조각으로 저장된 주소 및 속성을 통해 사용자 인터페이스 요소를 식별 할 수있는 기능입니다. 자동화 프로젝트에서 특정 활동을 수행하기 위해 요소 식별이 수행됩니다. Selector는 그래픽 사용자 인터페이스 요소와 상호 작용하는 활동을 사용할 때마다 자동으로 생성됩니다.

Selector를 통해 달성 한 Element 식별 프로세스를 특정 주소로 편지를 배달하는 우체부라고 생각할 수 있습니다. 우편 배달부가 편지를 배달하려면 특정 경로가 필요하며 국가> 도시> 우편 번호> 거리 이름> 거리 번호> 아파트 번호와 같이 체계적이고 계층화 된 세부 정보를 포함해야합니다. 마찬가지로 UiPath Studio에는 사용자 인터페이스 내의 특정 Element에 대한 자세한 경로가 필요합니다.

 

Selector가 유용한 비즈니스 시나리오는 무엇입니까?
자동화 된 프로세스가 UI Element에 대한 작업을 수행하는 대부분의 경우 선택기가 사용됩니다. 일반적인 활동은 다음과 같습니다.

- 버튼 클릭
- 웹 사이트의 필드에서 텍스트 입력 또는 스크랩
- 드롭 다운 목록에서 옵션 선택

 

 

사용 된 Activity 및 방법을 요약 해 보겠습니다.

클릭 Activity으로 시작했으며 '화면에 표시'옵션을 사용하여 MyCRM 앱의 필드를 가리 켰습니다.
UI Explorer를 시작하고 Selector의 구조를 보여주기 위해 동일한 요소를 표시했습니다. 마지막 줄은 UI Element의 실제 식별자이며, 위 줄은 연속적인 "부모"이며 첫 번째 줄은 일반적으로 루트 노드라고합니다. ;
Activity에서 자동으로 생성되고 유지되는 대부분의 Selector는 UI Element를 식별하기에 충분히 신뢰할 수 있습니다. 그러나 그렇지 않은 상황이 있습니다 – 몇 가지 예 :
www.rpachallenge.com을 열어 다이내믹 셀렉터와 그 신뢰성을 보여줍니다. 페이지를 새로 고칠 때마다 필드의 위치가 바뀌고 셀렉터를 더 이상 사용할 수 없습니다.
PDF 파일에서 Selector에는 파일 이름도 포함되어있어 파일에서 데이터를 스크랩하는 프로세스를 빌드하는 경우 신뢰할 수 없습니다.
우리는 www.rpachallenge.com 사이트를 사용하여 UI Element의 색인 개념을 보여주었습니다.

 

 

Selector의 구조  


사용자 인터페이스 (UI)는 다른 컨테이너 안에 중첩 된 일련의 컨테이너를 사용하여 빌드됩니다. MyCRM 응용 프로그램의 이름 입력 필드 Selector의 예를 들어 구조의 의미를 이해해 봅시다.

 

 

왼쪽에 보이는 화면이 MyCRM.exe를 실행시킨 화면이며, 예시로 프로그램에서 필요한 정보가 사람의 이름이라고 가정하여 왼쪽에 보이는 붉은색 상자로 표시한 부분은 UI Explorer의 엘리먼트 표시로 선택했을 때 Selector의 정보를 확인 해 보도록 하겠습니다. Selector의 정보는 아래의 UI Explorer화면으로 보겠습니다.

 

 

 

 

 

 

 

 

 

 

 

먼저 창에대한 정보로 App이름 및 Control의 이름을 받아옵니다. 그리고 상위 컨트롤들의 이름도 하나씩 보입니다. Tab control로 tabPagePeople이라는 이름으로 만들어진 탭의 GropBox5안에 textBoxPeopelFirstName으로 지정된 컨트롤을 선택하였습니다.

 

 

 

 

Selector의 태그 및 속성 

보시다시피, Selector는 노드로 구성됩니다. 그리고 각 노드는 태그와 속성으로 구성됩니다. 두 가지를 설명하기 위해 예를 들어 봅시다. 아래는 Selector 노드입니다. 

 

1) Tags

 

Selector XML 조각의 노드 
화면의 시각적 Element에 해당 
첫 번째 노드는 앱 창입니다 
마지막 노드는 Element 자체입니다 
예를 들면 다음과 같습니다. 

- wnd (창) 
- html (웹 페이지) 
- ctrl (제어) 
- webctrl (웹 페이지 제어) 
- 자바 (자바 애플리케이션 제어)

2) Attributes

 

모든 속성에는 이름과 값이 있습니다. 상수 또는 알려진 값을 가진 속성 만 사용해야합니다.



예를 들면 다음과 같습니다.

 -parentid =‘슬라이드 목록 컨테이너’
- tag =‘A’
- aaname =‘세부 사항’
- class =‘btn-dwnl’

 

 

 

3. The UI Explorer

 

UI Explorer란 무엇인가?


UI Explorer(탐색기)는 Selector를 분석 및 편집 할 수있는 UiPath Studio의 기능입니다. 여기에는 선택된 UI Element뿐만 아니라 사용자에게 Selector의 상태, 해당 시점에 실행중인 각 응용 프로그램의 탐색 가능한 UI를 표시하는 Visual Tree Panel을 표시하는 상태 단추가 포함됩니다. UI 탐색기는 사용 가능한 모든 태그와 속성을 표시하고 체크인 또는 체크 아웃 옵션을 제공합니다.


UI Explorer를 사용할 비즈니스 시나리오는?
이전에 강조 표시된 문제에 따라 자동으로 생성된 Selector가 충분히 안정적이거나 적응할 수 없는 경우:

Selector가 한 실행에서 다른 실행으로 변경됨
제품 업데이트 후 Selector가 변경될 수 있음
선택자들은 인덱스와 같은 신뢰할 수 없는 정보를 사용한다.

 

 


The UI Explorer Interface

 




The UI Frameworks

관심 Element에 대한 최상의 Selector를 반환하기 위해, 우리는 Ui Explorer에서 사용할 수 있는 다른 UI 프레임들 사이를 전환할 수 있다.

 

Default 

 


이것은 일반적으로 모든 유형의 사용자 인터페이스에서 올바르게 작동하는 독점적인 방법이다. 

 

Active Accessibility 


이는 애플리케이션을 액세스할 수 있게 하는 마이크로소프트의 이전 솔루션을 나타낸다. 기본 프레임워크가 예상대로 작동하지 않는 경우 레거시 소프트웨어를 사용할 때 권장된다. 

UI Automation 


이는 Microsoft의 향상된 접근성 모델로서, 기본 프레임워크가 예상대로 작동하지 않을 경우 새로운 애플리케이션을 사용할 때 권장된다. 

 





사용된 활동 및 방법 요약


- 우리는 MyCRM의 이름 필드에 대한 Selector를 생성하기 위해 UI 탐색기를 사용했다. Selector에 실제 이름이 있었다.

- 순차적으로 '입력' 활동을 추가하고 Selector를 복사/붙여넣었다. 우리는 필드에 다른 이름을 입력했다.
- 새 텍스트는 워크플로우를 실행할 때 이전 텍스트 뒤에 쓰여졌다. Properties 패널에서 'Empty 필드' 옵션을 확인하고 입력할 텍스트를 변경했다. 워크플로우를 재지정했지만 이름 속성의 값이 변경되었기 때문에 작동하지 않았다.
- 우리는 Selector를 편집하고 텍스트 속성을 선택 해제했다. 작업 흐름은 흠잡을 데 없이 작동했다.

 

 

 

The Property Explorer

 

 

그것은 무엇일까요?
Property Explorer는 위치, 가시성, 내부 텍스트 등과 같이 선택기에 표시되지 않는 특성을 포함하여 특정 UI 요소의 모든 속성을 표시하는 UI 탐색기의 기능이다.

Property Explorer를 사용할 비즈니스 시나리오는?
특정 속성이 값을 변경한 후 activity를 시작하려는 경우(Wait Attribute activity 사용)
가시성과 같은 웹 페이지의 속성 값을 변경하려는 경우(Set Attribute activity 사용)
속성을 확인하여 특정 UI 요소의 상태를 확인하려는 경우(Get Attribute activity 사용)


사용된 activity 및 방법 요약

www.rpachallenge.com을 열기 위해 'Open Browser' activity를 사용했다.
- '요소 찾기' activity를 사용하여 "시작" 버튼을 찾아 새로 생성된 변수에 저장했다.
- 실렉터가 유효한지 점검했다.
- 우리는 'Wait attribute' activity를 추가하고, 선택기를 복사/붙여넣고, 'aaname' 속성의 값을 '원형 1'로 변경했다.
- 버튼을 강조하기 위해 '강조 표시' activity를 했다.
- 우리는 워크플로우를 실행했고 버튼이 클릭된 후에만 강조 표시된다는 것을 시연했다.

 

 

4. Types of Selectors

 

앞에서 제시한 바와 같이, UI 요소가 Activity 내부에 표시되거나 녹음기를 사용할 때 Selector가 자동으로 생성된다. Full Selector와 Partial Selector 간의 차이를 아는 것은 컨테이너 외부의 컨테이너 안에서 생성되거나 추가된 activity를 사용할 때 또는 그 반대로 매우 중요하다.

UiPath의 컨테이너는 연결 창, 연결 브라우저 및 열기 브라우저입니다.

Full Selector 


최상위 창을 포함하여 UI 요소를 식별하는 데 필요한 모든 태그 및 특성 포함 
기본 레코더에 의해 생성됨 
수행된 작업이 여러 창 사이를 전환해야 할 때 가장 적합하다. 

Partial Selector 


최상위 창의 태그와 속성을 포함하지 않으므로 Partial Selector가 있는 Activity는 용기에 포함되어야 함 
데스크톱 레코더에서 생성 
동일한 창에서 여러 작업을 수행하는 데 가장 적합. 

 




Partial Selector 또는 Full Selector는 언제 사용하십니까?
Partial Selector를 사용하는 가장 좋은 예는 배포된 워크플로가 단순한 CRM처럼 여러 창을 통해 이동하지 않고 동일한 애플리케이션에서만 작업을 수행하는 단순한 자동화일 것이다.
반면에 워크플로우를 동일한 CRM 및 문서와 같이 여러 개의 창과 상호 작용해야 하는 경우, 이 예에서 필요한 UI 요소를 여러 창으로 분산시킬 수 있는 경우, Full Selector가 필요할 것이다.






Fine-tuning이 자꾸 미세조정으로 번역되어 의미가 전달이 확실히 되지 않는 것 같아서 Fine-tuning은 영문용어 그대로 사용합니다.

5. Fine-tuning

 


언제 Selector의 Fine-tuning이 필요한가?

동적으로 생성된 Selector
일부 웹사이트에서 발생하는 것과 같이, 특성 가치는 방문 시마다 변한다.

Selector가 너무 구체적임
일부 Selector는 파일 이름 또는 변경되는 값으로 자동으로 생성된다. 여기, 자리 표시자들은 매우 유용하다.

시스템 변경
일부 Selector에는 응용 프로그램의 버전 또는 응용 프로그램이 업데이트될 때 변경되는 다른 Element가 포함되어 있다.

IDX를 사용하여 Selector
IDX는 유사한 Element가 여러 개 있는 용기에 있는 현재 Element의 인덱스다. 새 Element가 동일한 용기에 나타나면 변경될 수 있다.


Fine-tuning이란 무엇인가?

 

 

Fine-tuning은 생성된 Selector가 시스템 변경과 관련하여 신뢰할 수 없거나 너무 구체적이거나 너무 민감한 상황에서 워크플로를 올바르게 실행하기 위해 Selector를 정제하는 과정이다.



주로 와일드카드 추가, 복구기능 사용, Selector에서 변수 사용 등 전체적인 프로세스에 큰 영향을 미치는 작은 단순 변경으로 구성된다.

Fine-tuning이 필요한 비즈니스 시나리오는 무엇인가?

- Workflow는 이름에 타임스탬프가 있는 파일을 사용한다.
- 워크플로우를 구축한 환경은 운영 환경(예: 애플리케이션 버전)과 다른 매개변수를 가진다.
- 동적 Selector를 사용하면 자동화의 신뢰성과 견고성이 향상된다.

사용된 Activity 및 방법 요약 - Video Demo 1

- 우리는 메모장을 열었다.
- 새로운 Sequence를 만들고, 적절한 이름을 부여하고, 주석을 추가했다.
- 'Attach Window'를 사용하였으며, 열려 있는 메모장 파일을 표시하였다. 용기 내부:
  - 'Send hotkey'를 사용하여 Ctrl + h를 전송하여 2개의 공간을 1개로 교체하였다
  - 첫 번째 필드(공백 2개), 두 번째 필드(공백 1개)에 'Type into' Activity 2개 사용
  - '모두 바꾸기' 버튼과 '닫기'에 각각 2개의 'Click' Activity를 사용하였습니다.
- 두 번째 메모장 파일을 열고 워크플로우를 실행했다. '원소를 찾을 수 없음' 오류를 반환함
- 'Attach window' 용기의 셀렉터를 열었다. 제목 속성에 첫 번째 파일의 이름이 포함됨
- Selector Editor의 복구 기능 사용 - 날짜의 일부가 "*"로 대체됨
- 세 번째 파일을 열고 워크플로우를 재실행했다. 우리는 전체 날짜를 "*"로 대체했다.



사용된 Activity 및 방법 요약 - Video Demo 2

- 새로운 Sequence를 만들고, 적절한 이름을 부여하고, 주석을 추가했다.
- Excel 파일에서 데이터를 읽기 위해 'Read Range' Activity를 사용하여 새로 생성된 변수("입력 데이터")에 저장했다.
- 'Attach window' 컨테이너를 사용하고 Anyteller 앱을 선택했다. 용기 내부:
  - 'Use cash count' 확인란에 'Check' Activity 사용
  - 'countOption'이라는 새로운 변수를 만들고, 그 값에 대해 행("UseCashCount")toString과 같은 'Assign'을 사용한다.
  - ‘Use amount’ 확인란에 'Check' Activity를 사용함
  - UI 탐색기를 사용하여 마지막 'Check' Activity Selector를 편집함:
    - 3 wnd ctrlname 속성 모두 선택 취소
    - 셀렉터가 올바르게 유지되었는지 확인하기 위해 검증
    - '이름' 특성을 편집하고 Ctrl + Space를 누른 후 변수 "countOption"을 선택했다.
  - 각 분야에 대해 3가지 '입력' Activity를 수행하였다.
    - 행("CashIn")toString
    - 행("OnUsCheck")toString
    - 행("NotOnUsCheck")toString
  - 'Accept' 버튼에 'Click' Activity를 사용하였습니다.




사용된 Activity 및 방법 요약 - Video Demo 3

1. 우리는 새로운 시퀀스를 만들고, 적절한 이름을 부여하고, 주석을 추가했다.

2. 'Attach browser'를 사용하여 ACME 웹페이지를 선택했다. 용기 내부:

- 'Get text' Activity를 사용하여 wiid column
- UI 탐색기를 사용하여 셀렉터를 편집함:
  - 테이블 행의 값은 2와 11 사이였습니다.
  - 기본값 "2"로 새로운 Int32 변수("인덱스")를 생성했다.
  - Ctrl + Space로 '표 행'을 편집하고 '색인' 변수를 추가하였다
- 'While' 루프를 추가하고, 조건을 < 12>로 설정하고, 'Get text' Activity를 'Do' 용기 안에 배치했다.
  - 'Get text' Activity의 출력으로 새로운 변수 텍스트를 생성함
  - 텍스트 판독값을 기록하기 위해 'Log message' Activity를 사용함
  - 지수의 가치를 1까지 높이기 위해 'Assign' Activity를 했다.










 

6. Managing Difficult Situations

 

자동 생성 된 Selector가 충분히 신뢰할 수없는 대부분의 경우 미세 조정을 통해 문제를 해결할 수 있습니다. 그러나 어려운 상황이 있습니다. 워크 플로우가 실행될 때마다 상태, 위치 또는 ID를 변경하는 UI 요소의 예를 고려하십시오.

이를 위해 다른 접근법이 있습니다.

Anchor Base
이는 속성 값이 신뢰할 수 없지만 (예 : 각 실행에서 생성됨) 안정적이며 대상 UI 요소에 연결된 UI 요소가있는 경우에 매우 유용합니다.
Anchor Base Activity에는 두 가지 부분이 있습니다. 하나는 Anchor UI 요소 (예 : 'Find Element')를 찾고 다른 하나는 원하는 Activity를 수행합니다.

Relative Selector
이 액티비티에서는 기본적으로 대상 UI 요소의 Selector에 Anchor Selector에 대한 정보를 통합합니다. 그러나 첫 번째 Selector의 일부 노드는 여전히 새 Selector에 있으므로 새 Selector에는 추가 편집이 필요할 수 있습니다. 해결책은 해당 부분 (동적 ID와 같은)을 제거하는 것이며 Anchor Selector를 사용하여 Selector가 안정화됩니다.

Visual Tree Hierarchy
Visual Tree Hierarchy는 계층 구조에서 위에있는 요소의 태그와 속성을 포함시켜 Selector의 안정성을 향상시킬 수 있습니다.
대상 UI 요소의 Selector가 신뢰할 수 없지만 계층 구조에서 UI 요소의 Selector가 바로 위에있는 경우 매우 유용합니다. 그러나 동적 부분을 제거하고 동시에 대상 요소를 고유 한 속성으로 식별 할 수 있어야하므로 Selector에서 추가 편집 및 유효성 검사가 필요합니다.

Find Children
이 Activity는 보다 안정적인 요소의 모든 하위를 식별 할 수 있습니다. 출력은 자식 컬렉션이므로 대상 UI 요소 만 식별 할 수있는 메커니즘이 필요합니다 (자식 중 하나를 사용하여 자식간에 고유하지만 보편적으로 식별하기에는 충분하지 않습니다).



데모영상 실습에 사용 된 Activity과 방법을 요약하자

'While'액티비티, 각 실행 후 기본값이 0 인 Int32 변수 및 변수 값이 5보다 작은 한 실행 조건으로 간단한 시퀀스를 만들었습니다.

1. Anchor Base

‘Anchor Base’컨테이너를 사용했습니다 :

첫 번째 Activity에서는 'Find Element'를 사용하여 수정 가능한 입력란 옆에 '이름'입력란을 표시했습니다.
두 번째로 선택된 Activity는‘하이라이트’였습니다. '이름'편집 가능 입력란을 표시했습니다.

2. 상대 Selector

편집 가능한 필드에 'Highlight' Activity를 사용했습니다.
UI 탐색기를 사용하여 Selector를 편집하고 'Indicate Anchor'를 클릭했습니다. 'First Name'텍스트를 가리 켰습니다. ‘ID’속성을 제거하고‘Edit Attributes’기능을 사용하여‘text’유형을 추가했습니다

3. Visual Tree Hierarchy 

'Find Element' Activity를 사용하여 Selector를 생성했습니다.
비주얼 트리에서 계층 구조를 탐색했습니다. 입력 필드가 DIV 컨테이너 아래에있었습니다. Selector 편집기에서 부모에 해당하는 태그를 추가하고 'id'속성을 제거했습니다. 이는 DIV 컨테이너 아래에 'INPUT'속성이있는 필드가 하나뿐이기 때문에 작동했습니다.
'Highlight'Activity에서 생성 된 Selector를 사용했습니다.

4. Find children

‘Find children’ Activity를 사용하고 옵션을‘자손 찾기’로 변경하여 계층의 하위 레벨도 찾았습니다. 자식을 저장하기 위해 UI 요소 유형의 새로운 변수를 만들었습니다.
‘For each’ Activity를 사용하여 속성 패널-UI 요소에서 올바른 유형을 선택하여 찾은 하위 항목을 반복했습니다. 몸에서 :
"element.GetFriendlyName.Contains ( "INPUT")" 조건과 함께 'If' Activity를 사용하여 입력 필드 만 분리했습니다. 실제 조건을 위해 편집 가능한 필드에 'Highlight' Activity를 사용했습니다.














 

 

 

 

 

 

 

 

 

+ Recent posts