cancel
Showing results for 
Search instead for 
Did you mean: 

블루프리즘 UIA 속도 저하 문제

TaeJuPark
Level 3
안녕하세요.
블루프리즘에서 UIA 모드로 Spy한 것을 Highlight 혹은 상호 작용을 할 때 기존에는 10초 정도 걸렸던 요소들이 재부팅 이후 30초~1분 가량 응답 없음이 발생하면서 시간이 과도하게 오래 걸리고 있습니다.

UIA 속도를 높이는 방법이 없을까요? Match Index를 사용했음에도 문제가 지속되고 있습니다.
8 REPLIES 8

BohyonHwang
Level 9
Match Index

Match Index는 일관성있게 유일한 요소를 식별하지 못하는 경우가 많습니다.
반복적으로 테스트를 해서 일관성 있는 값을 항상 동일하게 돌려줄 때 식별자로 사용이 가능합니다.
그걸 경우 동일한 속성을 갖는 다른 요소를 더 이상 검색하지 않으므로 스파이 시간을 단축시킬 수 있습니다.
이는 요소 식별 이후 불필요한 요소까지 검색하면서 쓸모 없는 시간 낭비를 없애는 방식이므로
내부적으로 요소를 식별하는 시간을 단축시키는 것은 아닙니다.

TaeJuPark
Level 3
답변 감사드립니다.

제가 이해한 것은 반복적인 테스트를 통하여 Match Index가 일관성 있는 값을 항상 돌려줄 경우에 사용하면 스파이 시간을 단축시킬 수 있다는 것입니다.
현재 Match Index를 사용하여 스파이는 되나 기존에 10초 걸리던 요소들이 재부팅 이후 30초~1분 정도 응답 없음이 발생한 뒤에 스파이가 되는 상황입니다. 그러므로 Match Index가 현재 도움이 되지 않는 상황인 것으로 생각됩니다. 다른 해결 방법이 있을까요?

TaeJuPark
Level 3
아니면 혹시 윈도우 업데이트가 UIA 스파이에 영향을 끼칠 수도 있을까요?

BohyonHwang
Level 9
윈도우 업데이트가 있었다면 응용 프로그램도 영향을 받았을 수 있으므로 UIA를 다시 스파이하는 것이 좋을 것 같습니다.

BohyonHwang
Level 9
35280.png
성능 향상을 위한 방법으로
붉은 화살표가 차지하는 시간은 Match Index 사용으로 절감이 가능합니다.
푸른 화살표가 차지하는 시간을 절감하는 방법은 아직 정식 문서를 발견하지 못했습니다.

사견으로 아래와 같이 추측해 봅니다.
이는 정답은 아니고 함께 고민하는 차원에서 생각해 본 제 사견입니다.

Windows 메뉴얼에서 TreeNode가 만들어질 때 주요 속성으로 UIA API 예제를 보면 ControlType.LocalizedControlType을 사용하므로
UIA ControlType과 UIA Localized Control Type을 사용하는 것이 도움이 될 것 같습니다.

메뉴얼 Match optimization에서 Win32의 경우 Ancestor count를 사용하는 것이 tree 유형의 모델 검색이 도움이 된다고 하므로
유사하게 추론을 해 보면
Parent UIA Control Type과 Parent UIA Localized Control Type도 사용하는 것이 도움이 될 것으로 상상해 봅니다.

그 외의 속성은 유일한 요소 구별에 도움이 되는 것이 아니라면
많이 선택을 하는 것이 오히려 성능에 역작용을 유발할 것 같으니
혹시 참고해서 시도해 보시기 바랍니다.

TaeJuPark
Level 3
답변 감사드립니다.
말씀 주신대로 시도해봤으나 속도 향상이 되지 않았습니다. UIA를 다시 스파이 했음에도 변화가 없는 것이 확인되었습니다. Localized Control Type을 추가하면 요소가 하이라이트되지 않아 Control Type만 추가한 상태입니다.기존에 빠르게 상호작용되던 요소들이 재부팅 이후 계속 느리게 진행되는 이유가 따로 있을까요?

BohyonHwang
Level 9
혹시 속도가 너무 느려서 자동화가 어렵다면 UIA 모드 사용을 재고해 볼 수 있습니다.

블루프리즘 메뉴얼에도 다음과 같은 설명이 있습니다.
UIA 방법을 사용하는 것은 블루프리즘 확장을 사용하는 것만큼 성능이 좋지 않습니다.

그러므로 UIA를 사용하기 전에 기본 스파이 방식으로 요소를 식별해서 자동화하는 것이 좋습니다.

웹 요소 식별을 위해서 블루프리즘은 다양한 방법을 제공하고 있습니다.
기본적으로 Identify 버튼을 이용한 방법입니다.
이 방법으로는 최적의 구성 요소를 식별하지 못할 수도 있습니다.

그리고 CSS Selector와 XPath를 이용하는 방법도 있습니다. (유니버시티: Blue Prism® Spying Using CSS Selector and Xpath)
경우에 따라서 블루프리즘이 스파이하는 Identify 버튼 방식보다 매우 우수한 성능을 보일 수도 있다고 합니다.

다음으로 위의 방식으로 식별하기 어려운 적절한 요소를 찾는 방법으로 Application Navigator를 사용하는 방법입니다.
마우스로 클릭해서는 식별할 수 없는 요소를 찾아서 훨씬 효과적인 상호작용이 가능한 자동화가 가능할 수도 있습니다.

이러한 방식을 모두 시도해 보고도 최적의 요소를 식별하지 못했을 때에 거의 마지막이다시피 선택하는 것이 UIA 스파이 방식입니다.
메뉴얼에 언급되었듯이 UIA 방식은 성능히 급격히 저하되는 현상을 보이곤 하기 때문입니다.

진정 최후의 선택 방법이라고 할 수 있는 것은 바로 Surface Automation입니다.
Region을 이용해서 요소를 식별하고 상호작용을 만들면 대부분의 응용프로그램 자동화가 가능합니다.
성능에 대한 우려가 있지만 실제로는 이미지에서 데이터를 추출하는 과정을 제외하면
다른 종류의 상호작용에는 견줄 만큼 매우 빠른 성능도 나타냅니다.

귀하의 문제를 해결하는 직접적인 방법은 아니지만 스파이와 관련된 자동화 개발 과정에서 항상 고려해야 하는 것이기에
되새김을 위해 다시 한번 정리해 드립니다.

UIA 스파이 최적화에 관한 것은 다른 개발자들과 토론을 병행하면서 계속 연구해 보겠습니다.
감사합니다.

BohyonHwang
Level 9
LocalizedControlType은 ControlType에 1 대 1로 매칭되는 속성이므로
말씀하신대로 ControlType를 선택하고 LocalizedControlType을 선택하는 것은 중복의 의미가 있는 것 같습니다.
관계 모델 개념으로 본다면 ControlType 하나만 사용하는 것이 이치에 맞아 보입니다.
감사합니다.