UI 자동화 트리 개요

보조 기술 제품 및 테스트 스크립트는 Microsoft UI 자동화 트리를 탐색하여 UI 및 해당 요소에 대한 정보를 수집합니다.

UI 자동화 트리는 Windows 데스크톱 창("바탕 화면")을 나타내고 자식 요소가 애플리케이션 창을 나타내는 루트 요소입니다. 이러한 각 자식 요소에는 메뉴, 단추, 도구 모음 및 목록 상자와 같은 UI 조각을 나타내는 요소가 포함될 수 있습니다. 이러한 요소에는 목록 항목과 같은 요소가 포함될 수 있습니다.

UI 자동화 트리는 고정 구조체가 아닙니다. 수천 개의 요소가 포함될 수 있기 때문에 전체에서 거의 볼 수 없습니다. UI 자동화 트리의 일부는 클라이언트에 필요하므로 빌드되고 요소가 추가, 이동 또는 제거될 때 트리의 구조가 변경됩니다.

UI 자동화 공급자는 조각의 항목 간 탐색을 구현하여 UI 자동화 트리를 지원합니다. 조각은 특정 프레임워크의 요소의 전체 하위 트리이며 일반적으로 창에서 호스트되는 루트 요소( 조각 루트라고 함)가 있습니다.

공급자는 한 컨트롤에서 다른 컨트롤로의 탐색에 관심이 없습니다. 이는 기본 창 공급자의 정보를 사용하는 UI 자동화 코어에서 관리됩니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

UI 자동화 트리의 보기

UI 자동화 트리를 필터링하여 특정 클라이언트와 관련된 UI 자동화 요소만 포함하는 뷰를 만들 수 있습니다. 이 방법을 사용하면 클라이언트가 특정 요구 사항에 UI 자동화 통해 제공되는 구조를 사용자 지정할 수 있습니다.

클라이언트는 범위를 지정하고 필터링하여 보기를 사용자 지정할 수 있습니다. 범위 지정은 기본 요소에서 시작하여 보기의 범위를 정의합니다. 예를 들어 애플리케이션은 데스크톱의 직접 자식 또는 애플리케이션 창의 모든 하위 항목만 찾으려고 할 수 있습니다. 필터링은 뷰에 포함된 요소의 형식을 정의합니다.

UI 자동화 공급자는 IUIAutomationElement::IsControlElement 및 IUIAutomationElement::IsContentElement 속성을 포함하여 요소의 속성을 정의하여 필터링을 지원합니다.

UI 자동화 원시 보기, 컨트롤 뷰 및 콘텐츠 뷰의 세 가지 기본 보기를 제공합니다. 이러한 보기는 수행된 필터링 유형에 의해 정의됩니다. 모든 보기의 scope 애플리케이션에 의해 정의됩니다. 애플리케이션은 속성에 다른 필터를 적용할 수 있습니다. 예를 들어 컨트롤 뷰에 활성화된 컨트롤만 포함할 수 있습니다.

Raw 뷰

UI 자동화 트리의 원시 보기는 데스크톱이 루트인 자동화 요소의 전체 트리입니다. 원시 뷰는 애플리케이션의 네이티브 프로그래밍 구조를 밀접하게 따르며 사용 가능한 가장 자세한 보기입니다. 트리의 다른 뷰가 빌드되는 기준이기도 합니다. 이 보기는 기본 UI 프레임워크에 따라 달라지므로 WPF(Windows Presentation Foundation) 단추의 원시 보기는 Microsoft Win32 단추와 다른 원시 보기를 가집니다.

원시 보기는 속성을 지정하지 않고 요소를 검색하거나 IUIAutomation::RawViewWalker 를 사용하여 트리 탐색을 위한 IUIAutomationTreeWalker 인터페이스를 가져와서 가져옵니다.

컨트롤 뷰

컨트롤 뷰는 Raw 뷰의 하위 집합입니다. 여기에는 IUIAutomationElement::IsControlElement 속성이 TRUE로 설정된 UI 항목만 포함됩니다.

컨트롤 뷰에는 사용자에게 정보를 제공하거나 사용자가 작업을 수행할 수 있도록 하는 UI 항목이 포함됩니다. 자동화된 테스트 애플리케이션에 가장 흥미로운 UI 항목입니다.

컨트롤 뷰에는 UI의 논리적 구조에 영향을 주는 비대화형 UI 항목도 포함됩니다. 여기에는 목록 보기 헤더, 도구 모음, 메뉴 및 상태 표시줄과 같은 항목 컨테이너가 포함됩니다. 컨트롤 뷰에 표시되는 다른 비대화형 항목은 대화 상자에서 정보와 정적 텍스트가 있는 그래픽입니다.

대화 상자에서 컨트롤을 배치하는 데 사용되는 패널과 같이 레이아웃 또는 장식용으로만 사용되는 비대화형 항목은 컨트롤 뷰에 표시되지 않습니다.

UI 자동화 트리의 컨트롤 뷰는 최종 사용자가 인식하는 UI 구조에 밀접하게 매핑됩니다. 이렇게 하면 보조 기술 제품이 최종 사용자에게 UI를 더 쉽게 설명하고 최종 사용자가 애플리케이션과 상호 작용하는 데 도움이 됩니다.

컨트롤 뷰는 IUIAutomationElement::IsControlElement 속성이 true로 설정된 요소를 검색하거나 ControlViewWalker 를 사용하여 트리 탐색을 위한 IUIAutomationTreeWalker 인터페이스를 가져와서 가져옵니다.

콘텐츠 뷰

UI 자동화의 콘텐츠 보기는 컨트롤 보기의 하위 집합입니다. 여기에는 IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement 속성이 모두 TRUE로 설정된 UI 항목만 포함됩니다.

콘텐츠 보기에는 키보드 포커스를 받을 수 있는 UI 항목과 UI 항목의 레이블이 아닌 일부 텍스트를 포함하여 사용자 인터페이스의 실제 정보를 전달하는 UI 항목이 포함되어 있습니다. 화면 읽기 프로그램 애플리케이션에서 가장 흥미로운 UI 항목입니다. 예를 들어 드롭다운 콤보 상자의 값은 최종 사용자가 사용하는 정보를 나타내므로 콘텐츠 보기에 표시됩니다.

콘텐츠 보기에서 콤보 상자와 목록 상자는 둘 다 하나 이상의 항목을 선택할 수 있는 UI 항목의 컬렉션으로 표시됩니다. 한 항목이 항상 열려 있고 하나의 항목이 확장 및 축소될 수 있다는 사실은 사용자에게 표시되는 데이터 또는 콘텐츠를 표시하도록 디자인되었기 때문에 콘텐츠 보기에서 관련이 없습니다.

콘텐츠 보기는 IsControlElementCurrentIsContentElement 속성이 모두 TRUE로 설정된 요소를 검색하거나 IUIAutomation::ContentViewWalker 를 사용하여 트리 탐색을 위한 IUIAutomationTreeWalker 인터페이스를 가져와서 가져옵니다.

다음 이미지는 컨트롤 뷰와 콘텐츠 뷰의 차이점을 보여 줍니다. 첫 번째 이미지는 드롭다운 목록에 세 개의 항목이 있는 간단한 콤보 상자를 보여줍니다. 두 번째 이미지는 UISpy.exe 애플리케이션의 컨트롤 및 콘텐츠 뷰에 콤보 상자 UI 항목이 표시되는 방식을 보여 제공합니다.

세 개의 드롭다운 항목이 있는 간단한 콤보 상자의 스크린샷

콤보 상자 항목의 컨트롤 및 콘텐츠 보기가 있는 uispy 애플리케이션의 스크린샷

개념

CUIAutomation 개체 만들기

UI 자동화 요소 가져오기

UI 자동화 기본 사항