레코더 패키지에서 사용하는 검색 기준
- 최종 업데이트2024/04/02
레코더 패키지에서 사용하는 검색 기준
레코더 패키지로 사용자 인터페이스(UI) 컨트롤을 녹화하면 일련의 속성이 캡처되며, 이러한 속성은 런타임 중에 녹화된 UI 컨트롤을 식별하고 상호작용하는 데 사용됩니다.
레코더를 사용하여 캡처하는 컨트롤을 객체라고 합니다. 레코더는 객체를 캡처할 때 객체를 고유하게 식별하는 모든 가능한 속성을 캡처합니다. 선택한 속성은 런타임 중에 대상 애플리케이션에서 컨트롤을 검색하고 찾기 위한 '검색 기준'으로 사용됩니다.
Bot이 실행되는 동안 레코더는 대상 애플리케이션 제어 트리를 살펴보고 저장된 속성(검색 기준이라고도 함)과 일치하는 제어를 선택합니다.
기본적으로 레코더는 기술을 기반으로 레코딩된 컨트롤에 대해 가능한 최상의 검색 기준을 선택합니다. 그러나 Bot이 이전에 기록된 UI 컨트롤을 찾으려고 할 때 문제가 발생할 수 있습니다. 이러한 실패의 일반적인 원인에는 다음과 같은 것들이 포함되지만 이에 국한되지는 않습니다.
- 동적 속성: 캡처된 요소의 속성이 세션 또는 페이지가 로드될 때마다 변경되고 검색 기준에 동적 속성이 포함된 경우 런타임 중에 Bot이 실패할 수 있습니다.
- 잦은 UI 변경: 대상 애플리케이션이 UI 변경으로 자주 업데이트되고 기록된 UI 컨트롤의 속성이 변경되는 경우 Bot이 기록된 컨트롤을 인식하려고 할 때 문제가 발생할 수 있습니다.
- 속성이 중복된 컨트롤: 동일한 속성을 가진 컨트롤이 여러 개 있는 경우 의도하지 않은 결과가 발생하거나 Bot이 컨트롤을 인식하지 못할 수 있습니다.
이러한 상황에서 Bot이 레코더가 캡처한 기본 검색 기준에만 의존하면 캡처된 컨트롤을 인식하는 데 어려움을 겪을 수 있습니다. 캡처된 검색 기준은 기준과 일치하는 다른 객체가 없거나 객체 자체가 주기적으로 업데이트되지 않는 한 일관되게 작동합니다. 따라서 UI 컨트롤을 녹화한 후에는 이러한 요소를 고려하여 Bot이 실행 시 녹화된 컨트롤을 고유하게 식별하는 데 도움이 되는 검색 기준을 구성해야 합니다.
HTML 기술에 대한 검색 및 유효성 검사 속성
검색 기준은 검색 객체 속성과 유효성 검사 속성의 조합입니다.
- HTML 클래스
- HTML ID
- HTML 이름
- HTML 프레임 소스
- HTML 태그
- HTML 유형
- HTML InnerText
- HTML 프레임 경로
- DOMXPath
- 경로
- HTML 프레임 존재
- FrameDOMXPath
- HTML 클래스
- HTML 높이
- HTML Href
- HTML ID
- HTML 왼쪽
- HTML 이름
- HTML 상위 객체
- HTML SourceIndex
- HTML 태그
- HTML 제목
- HTML 상단
- HTML 유형
- HTML 값
- HTML 너비
- HTML 내부 텍스트
- InnerHTML
- OuterHTML
- IsVisible
동적 속성 및 사용자 정의 검색 기준 사용 예시
모든 세션에서 변경 사항을 기록하려는 웹 페이지의 특정 속성이 있다고 가정해 보겠습니다. 변경되는 속성을 포함하면 Bot이 컨트롤을 인식하지 못할 수 있습니다. 예를 들어 다음 비디오에 표시된 샘플 로그인 페이지를 확인합니다. 로그인 버튼의 ID 속성은 페이지가 로드될 때마다 변경됩니다.
페이지에서 로그인 버튼을 녹화하면 레코더가 기본 속성 중 하나로 ID를 캡처합니다.
![동적 객체 속성의 예](https://automationanywhere-be-prod.automationanywhere.com/bundle/enterprise-v2019/page/recordersearchcriteriaexample.png?_LANG=kokr)
검색 기준을 업데이트하지 않고 Bot을 실행하면 페이지가 로드될 때마다 로그인 버튼의 ID가 계속 변경되므로 런타임 중에 Bot이 실패합니다.
![검색 기준 오류](https://automationanywhere-be-prod.automationanywhere.com/bundle/enterprise-v2019/page/recorderpackagesearchcriteriaerror.png?_LANG=kokr)
ID 속성이 계속 변경되므로 Bot이 이전에 캡처한 ID가 있는 로그인 버튼을 찾을 수 없어 실패합니다. 따라서 이 시나리오에서 ID 속성을 사용하면 작동하지 않습니다. 이 문제는 다음 비디오에 표시된 대로 ID 속성을 지우고 innerHTML 속성을 선택하면 쉽게 해결할 수 있습니다. 이렇게 하면 Bot이 ID가 btn1696911842030-8845인 컨트롤을 찾지 않습니다. 대신 DOMXPath 및 innerHTML 속성의 조합에 따라 컨트롤을 고유하게 식별합니다.
HTML에서 객체 속성 수정 시 고려 사항
- 기록할 웹 페이지에 동적 속성이 있는 경우 기록된 객체 속성에서 해당 속성을 생략합니다. 대신 런타임 중에 변경되지 않는 속성을 선택합니다.
- 동일한 속성을 가진 UI 컨트롤이 여러 개 있는 경우 특정 UI 컨트롤을 고유하게 식별할 수 있는 속성을 선택합니다. 예를 들어, 유형 버튼이 있는 버튼이 여러 개 있고 각 버튼마다 innerHTML 텍스트(버튼 레이블)가 다른 경우, innerHTML을 속성 중 하나로 사용하면 런타임 중에 컨트롤을 식별하는 데 도움이 됩니다.
- 레이아웃 변경과 함께 작동하는 동적 또는 상대 DOMXPath를 사용합니다. 레이아웃이 변경되거나 UI에 동적 컨트롤이 추가되는 경우 정적 DOMXPath를 사용하지 않습니다.
- 속성 값의 특정 문자가 동적인 경우 와일드카드('*')를 사용합니다.