안녕하세요 모닝수잔입니다 :)

 

오늘은 선택자(Selector)의 미세조정(Fine-tuning)에 대해서 그 정의와 방법, 필요성에 대해 알아보겠습니다.

 

Fine-Tuning - 미세조정

▶ Fine-tuning is the process of refining selectors in order to have the workflow correctly executed in situations in which the generated selector is unreliable, too specific or too sensitive with regards to system changes. It mainly consists of small simple changes that have a larger impact on the overall process, such as adding wildcards, using the repair function or using variables in selectors.

 

▷ 미세조정은 생성된 선택자가 시스템 변경과 관련해서 신뢰할 수 없거나 너무 구체적이거나 너무 민감한 상황에서 워크플로우를 올바르게 실행하기 위해 선택자를 재조정해주는 프로세스다. 주로 와일드카드(*)를 추가하거나 복구기능을 사용하거나 선택자 내부에서 변수를 사용하는 것처럼 전반적인 프로세스에 큰 영향을 주는 작고 단순한 변경들로 구성된다. 

 

 

유아이패스(Uipath)에서 제공하는 액티비티들이 충분히 믿을만한 선택자들을 추출해주지만 그럼에도 불구하고 미세조정이 필요한 경우가 있습니다. 바로 아래와 같이 "유동성"이 필요한 4가지 케이스입니다.

 

 

1) 동적으로 생성된 선택자 (Dynamically generated selectors)

일부 웹사이트에서 발생하는 것처럼 속성값이 방문할 때마다 변경되는 경우

 

2) 너무 구체적인 선택자 (Selectors being too specific)

파일명 또는 변경값으로 자동으로 선택자가 생성되는 경우

 

3) 시스템의 변경 (System changes)

선택자가 어플리케이션 버전이나 어플리케이션이 업데이트되었을 때 변경된 요소를 포함하는 경우

 

4) 인덱스를 사용하는 선택자 (Selectors using IDX)

여러 개의 비슷한 요소가 있는 하나의 컨테이너 안에서 새로운 요소가 나타났을 때 인덱스에 변경이 생길 수 있는 경우 

 

 

우리가 인터넷 포털사이트 "다음"에서 사회 뉴스를 볼 때 주소창을 보시면 주소지 뒷부분이 /society가 되고, 경제 뉴스를 볼 때 주소창을 보시면 주소지는 /economic이라는 점을 확인할 수 있으실 겁니다. 이처럼 매번 사이트를 방문할 때마다 속성값이 변경된다면 → 선택자도 변경이 될 것이고 결과적으로 워크플로우를 실행하는데 오류가 발생하겠죠? 그렇기 때문에 이런 선택자에 대해서는 미세조정이 필요합니다.

 

미세조정은 어떻게 할 수 있을까요? 이럴 때 사용해줄 수 있는 가변적인 요소 3가지가 있는데 바로 와일드카드, 변수, 인덱스입니다. 하나씩 살펴보겠습니다.

 

 

▶ 와일드카드는 ? / * 를 말하는데 ?는 1글자를 대체하고 *은 0개 또는 그 이상의 문자를 대체합니다. 예를 들어, 파일명이 2020-08-01 ~ 2020-08-31 날짜로 구성되어 있다면 YYYY-MM-DD 구성에서 DD 부분을 **으로 변경해줄 수 있습니다. 그럼 ** 자리에 어떤 숫자가 들어가더라도 오류가 발생하지 않겠죠?

 

▶ 변수는 우리가 잘 알고 있듯이, 위 예시에서는 ** 자리를 Day라는 변수를 부여하고 Day의 값(Value)을 1~31로 구성된 리스트(List)나 배열(Array)로 구성하면 특정 일자의 파일을 불러올 수도 있고 For Each 액티비티 같은 반복문을 이용해서 1~31일까지 모든 날짜의 파일을 순서대로 불러올 수도 있겠죠?

 

인덱스는 순서입니다. 특히 유아이패스에서 선택자가 불안정할 때는 인덱스 값만 주어지는 경우가 있는데요, 위 예시에서 1~31일까지 31개의 파일이 날짜 순서대로 하나의 폴더에 있다면 0번째 인덱스 값은 1일자의 파일이 되고 20번째 인덱스 값을 가져오면 19일자의 파일이 됩니다. 인덱스는 0에서부터 시작하기 때문입니다.

 

 

하/지/만,

 

이런 가변적인 요소 3가지로도 해결되지 않을 경우에는 어떻게 하면 좋을까요? 이럴 때는 대상의 주변에 있는 다른 믿을만한 기준점을 찾아서 해당 선택자를 안정적으로 만들어줄 수 있습니다. Anchor Base, Find Children 액티비티를 통해서 말이죠. 

 

 

예시로 Anchor Base 액티비티에 대해서 살펴보겠습니다. Anchor Base는 선택자가 불안정할 때, 타겟이 되는 UI 요소와 연결되어 있으면서도 안정적인 UI 요소를 Anchor로 선택함으로써 Anchor 부분이 잘 - 실행되면 그 다음에 원하는 작업을 수행하도록 해주는 액티비티입니다. 예를 들어 아래 화면에서 첫번째 Anchor Base 액티비티는 "Daum 로고"를 찾으면 (Find Element 액티비티) 그 옆에 있는 입력창을 하이라이트(Highlight 액티비티)해주도록 사용되었는데요, 입력창 자체가 불안정한 선택자이기 때문에 바로 옆에 있는 비교적 안정적인 Daum 로고를 Anchor 기준점으로 사용해서 입력창을 좀 더 쉽게 찾도록 해준거죠. 두번째 Anchor Base 액티비티는 "뉴스"를 찾으면 (Find Element 액티비티) 해당 Uielement인 "뉴스"를 클릭하도록 (Click 액티비티) 사용되었답니다.

 

 

특히나 내가 만든 선택자(Selector)가 맞는지 혼동될 때는 Anchor Base나 Find Children 액티비티에 특정 위치나 부분에 하이라이트 표시를 해주는 Highlight 액티비티도 유용하게 사용될 수 있답니다. 오늘 포스팅은 평소와 다르게 퀴즈 하나를 살펴보고 끝마치도록 하겠습니다.

 

 

 

위에 있는 문제는 유아이패스 아카데미(Uipath Academy)에서 발췌해온 문제인데요, "선택자란 무엇일까요?"라는 문제입니다. 1번, UI요소를 위한 컨테이너이다. 2번, 근원(root)에서 시작해서 목표 요소에 이르기까지 UI 요소로 가는 길이다. 3번, UI 요소의 고유 ID이다.

 

정답은 몇번일까요? 네 맞습니다. 바로 2번이죠. 오늘의 포스팅이 선택자라는 친구를 이해하는데 많은 도움이 되셨길 바라며 여기에서 마무리하겠습니다.

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기