가. TreeWalker

UI 자동화 기술에서는 UI 자동화 트리를 탐색하는 메서드와 속성을 제공하는 TreeWalker 클래스를 제공합니다.

네임스페이스: System.Windows.Automation

어셈블리: UIAutomationClient (UIAutomationClient.dll)

 

TreeWalker 클래스는 정적 멤버 필드인 ContentViewWalker, ControlViewWalker, RawViewWalker 를 제공합니다.

 

[그림 4.1] TreeWalker 클래스 다이어그램
[그림 4.1] TreeWalker 클래스 다이어그램
 그리고 TreeWalker의 생성자에서는 TreeWalker에서 탐색할 UI 자동화 요소 트리의 뷰를 인자로 받습니다. TreeWalker 클래스는 개체의 뷰를 정의하는 Condition 속성을 통해 가져오기 할 수 있으며 다양한 형태로 탐색할 수 있는 메서드들을 제공합니다.

 

  • 생성자

TreeWalker 클래스의 생성자는 탐색할 UI 자동화 요소 트리의 뷰를 정의하는 Conditon 속성을 전달 받습니다.

 

예를 들어 컨트롤 요소이면서 활성화 상태인 자동화 요소를 탐색하기 위한 TreeWalker를 생성한다면 다음과 같은 코드를 사용할 수 있습니다.

 

이와 같이 생성한 TreeWalker 개체는 다양한 탐색 기능을 이용하여 원하는 조건의 자동화 요소를 탐색할 수 있습니다. 만약 TreeWalker를 이용하여 자동화 요소의 첫번째 자식을 탐색한다면 다음과 같습니다.

 

이처럼 TreeWalker 개체를 이용하면 원하는 조건의 자동화 요소를 쉽게 탐색할 수 있습니다.

 

 

  • 정적 TreeWalrker

TreeWalker 클래스는 정적 TreeWalker로 RawViewWalker, ControlViewWalker, ControlViewWalker를 제공하고 있습니다.

 

만약 특정 조건없이 UI 자동화 트리에서 원하는 UI 자동화 요소를 탐색하고자 한다면 적정 TreeWalker를 이용할 수 있습니다. RawViewWalker는 필터링 없는 전체 UI 자동화 트리에서 탐색을 제공합니다. 그리고 ControlViewWalker는 UI 자동화 트리에서 컨트롤만 탐색을 원할 때 사용할 수 있습니다. ContentViewWalker는 UI 자동화 트리에서 컨텐츠만 탐색을 원할 때 사용할 수 있습니다.

 

다음은 계산기의 프로그램용 보기 상태에서 Bin 라디오 버튼을 선택하였을 때 활성화 상태의 컨트롤 목록을 트리 뷰 목록에 추가한 화면입니다.

 

이와 같이 특정 조건에 맞는 UI 자동화 트리를 원한다면 조건 개체를 입력 인자로 TreeWalker 개체를 생성하여 탐색하여야 할 것입니다.

 

[그림 4.2] 활성화 컨트롤 UI 트리
[그림 4.2] 활성화 컨트롤 UI 트리

 

다음은 계산기의 프로그램용 보기 상태에서 Bin 라디오 버튼을 선택하였을 때 계산기 창의 서브 트리에 있는 전체 UI 자동화 요소를 탐색하여 TreeView 항목에 추가한 화면입니다. 이처럼 조건없이 전체 UI 자동화 요소를 탐색할 때는 TreeWalker의 정적 개체인 RawViewWalker를 이용하여 탐색합니다.

[그림 4.3] Raw UI 트리
[그림 4.3] Raw UI 트리

다음은 계산기의 프로그램용 보기 상태에서 Bin 라디오 버튼을 선택하였을 때 계산기 창의 서브 트리에 있는 전체 컨트롤 UI 자동화 요소를 탐색하여 TreeView 항목에 추가한 화면입니다. 이처럼 전체 컨트롤 UI 자동화 요소를 탐색할 때는 TreeWalker의 정적 개체인 ControlViewWalker를 이용하여 탐색합니다.

 

[그림 4.4] Control UI 트리
[그림 4.4] Control UI 트리

다음은 계산기의 프로그램용 보기 상태에서 Bin 라디오 버튼을 선택하였을 때 계산기 창의 서브 트리에 있는 전체 컨텐츠 UI 자동화 요소를 탐색하여 TreeView 항목에 추가한 화면입니다. 이처럼 전체 컨텐츠 UI 자동화 요소를 탐색할 때는 TreeWalker의 정적 개체인 ContentViewWalker를 이용하여 탐색합니다.

 

[그림 4.5] Content UI 트리
[그림 4.5] Content UI 트리
  • TreeWalrker 메서드

TreeWalker 클래스는 트리에서 다양한 UI 자동화 요소를 탐색하는 메서드를 제공합니다. 첫번째 자식, 다음 자식, 이전 자식, 마지막 자식, 부모를 찾는 메서드를 제공하고 있습니다. 그리고 특정 UI 자동화 요소가 TreeWalker의 조건에 맞으면 자신을 반환하고 그렇지 않으면 조건에 맞는 부모나 상위 UI 자동화 요소를 반환하는 메서드를 제공합니다.

 

다음은 RawViewWalker를 이용하여 특정 UI 자동화 요소의 자식을 찾는 예제입니다.

 

이처럼 찾고자 하는 자동화 요소가 무엇인지에 따라 원하는 메서드를 사용할 수 있습니다. 참고로 CacheRequest 개체를 입력 인자로 받는 탐색 메서드는 CacheRequest 개체에 필터 조건을 설정하여 CacheRequest 조건에 맞는 자동화 요소를 탐색할 수 있습니다.