Microsoft UI 자동화

Microsoft UI Automation

Microsoft UI Automation(UIA)은 다른 애플리케이션의 [1][2]사용자 인터페이스(UI) 요소에 액세스, 식별 및 조작할 수 있는 API(Application Programming Interface)입니다.

UIA는 UI 접근성을 제공하는 것을 목표로 하고 있으며 Microsoft Active Accessibility의 후속 버전입니다.또한 GUI 테스트 자동화도 용이하며 많은 테스트 자동화 툴의 기반이 되는 엔진입니다.RPA 툴은 비즈니스 프로세스에서 애플리케이션을 자동화하는 데도 사용합니다.

UIA의 속성 공급자는 Win32와 를 모두 지원합니다.NET 프로그램

UIA의 최신 사양은 Microsoft UI Automation Community Promise Specification의 일부로 제공됩니다.Microsoft는 Microsoft Windows 이외의 플랫폼으로의 이식성이 설계 목표 중 하나라고 주장하고 있습니다.이후 Mono[3]이식되었습니다.

역사

2005년에 Microsoft는 MSAA 프레임워크의 후계자로서 UIA를 발표했습니다.

Managed UI Automation API는 의 일부로 출시되었습니다.NET Framework 3.0.네이티브 UI Automation API(프로바이더)는 Windows VistaWindows Server 2008 SDK의 일부로 포함되어 있으며 와 함께 배포됩니다.NET 프레임워크

UIA는 Windows 7에서 Windows Automation API 3.0의 일부로 개봉 즉시 사용할 수 있으며 Windows XP, Windows Vista 및 Windows Server 2003 [4]및 2008에서는 별도의 다운로드로 사용할 수 있습니다.

동기 및 목표

MSAA의 후계자로서 UIA는 다음의 목표에 대처하는 것을 목표로 하고 있습니다.

  • 클라이언트를 대상 애플리케이션의 프로세스에 강제로 연결하지 않고 효율적인 클라이언트 성능을 실현합니다.
  • UI에 대한 자세한 정보를 표시합니다.
  • MSAA와 공존하여 사용하되 MSAA에 존재하는 문제를 상속하지 마십시오.
  • 구현이 간단한 MSAA 대체품을 제공합니다.

기술 개요

Frame

클라이언트 측에서는 UIA가 를 제공합니다.의 NET 인터페이스UIAutomationClient.dll어셈블리와 COM 인터페이스가 직접 구현되어 있습니다.UIAutomationCore.dll.

서버 측에서는UIAutomationCore.dll현재 데스크톱의 모든 프로세스 또는 선택한 프로세스에 삽입되어 클라이언트 대신 데이터 검색을 수행합니다.또한 DLL은 UIA 플러그인(프로바이더라고 함)을 호스트 프로세스에 로드하여 다른 기술을 사용하여 데이터를 추출할 수도 있습니다.

UIA에는 다음 표와 같이4개의 주요 프로바이더컴포넌트와 클라이언트컴포넌트가 있어요

요소 묘사
UIAutomationCore (UIAutomationCore.dll 및 의존자) 프로바이더와 클라이언트간의 통신을 처리하는 기본 코드(UIA 코어라고도 불립니다).UI Automation Core는 관리되지 않는 응용 프로그램 및 클라이언트를 위한 공급자 및 클라이언트 API 인터페이스도 제공합니다. 관리되지 않는 응용 프로그램(클라이언트 또는 공급자)에는 아래 나열된 관리 어셈블리가 필요하지 않습니다.
Managed Provider API(UIAutomationProvider.dll 및 종속자)

관리 대상 UIA 공급자응용 프로그램에 의해 구현되는 일련의 인터페이스 정의 및 함수.공급자는 UI 요소에 대한 정보를 제공하고 프로그램 입력에 응답하는 개체입니다.

Managed Client API(UIAutomation Client.dll 및 의존자) 관리 대상 UIA 클라이언트애플리케이션의 인터페이스 정의 및 기능 세트.
UIAutomation ClientsideProviders.dll 레거시 Win32 컨트롤 및 MSAA 애플리케이션을 위한 UIA 프로바이더의 실장 세트.이 클라이언트 측 공급자는 기본적으로 관리되는 클라이언트 응용 프로그램에서 사용할 수 있습니다.

요소들

UIA는 모든 UI를 자동화 요소로 클라이언트 애플리케이션에 제공합니다.요소는 데스크톱이 루트 요소로 트리 구조에 포함됩니다.

Automation Element 객체는 이들이 나타내는 UI 요소의 공통 속성을 표시합니다.이러한 특성 중 하나는 제어 유형으로, 기본적인 모양과 기능을 인식할 수 있는 단일 개체(예: 버튼 또는 확인란)로 정의합니다.

또한 요소는 제어 유형에 고유한 속성을 제공하는 제어 패턴을 노출합니다.제어 패턴은 클라이언트가 요소에 대한 추가 정보를 얻고 입력을 제공할 수 있도록 하는 메서드도 노출합니다.

클라이언트는 트리의 원시 보기를 제어 보기 또는 내용 보기로 필터링할 수 있습니다.애플리케이션은 커스텀 뷰를 작성할 수도 있습니다.

트리

UIA 트리 내에는 현재 데스크톱을 나타내는 루트 요소와 응용 프로그램 창을 나타내는 하위 요소가 있습니다.이러한 각 하위 요소에는 메뉴, 단추, 도구 모음 및 목록 상자 등 UI 조각을 나타내는 요소가 포함될 수 있습니다.이러한 요소에는 목록 항목과 같은 다른 요소가 포함될 수 있습니다.

UIA 트리는 고정된 구조가 아니며 수천 개의 요소를 포함할 수 있기 때문에 전체적으로는 거의 보이지 않습니다.트리의 일부는 필요에 따라 작성되며 트리는 요소가 추가, 이동 또는 제거될 때 변경될 수 있습니다.

제어 유형

UIA 컨트롤 유형은 콤보 상자나 버튼 등 특정 요소가 나타내는 컨트롤의 종류를 나타내기 위해 사용할 수 있는 잘 알려진 식별자입니다.

잘 알려진 식별자를 사용하면 보조 기술(AT) 장치가 사용자 인터페이스(UI)에서 사용할 수 있는 컨트롤 유형과 컨트롤과의 상호 작용 방법을 보다 쉽게 결정할 수 있습니다.UIA 제어 유형 정보의 사람이 판독할 수 있는 표현은LocalizedControlType컨트롤 또는 애플리케이션 개발자가 커스터마이즈할 수 있는 속성입니다.

제어 패턴

제어 패턴은 컨트롤 유형이나 컨트롤의 모양과 관계없이 컨트롤의 기능을 분류하고 노출하는 방법을 제공합니다.

UIA는 공통 제어 동작을 나타내기 위해 제어 패턴을 사용합니다.예를 들어,Invokecontrol pattern은 호출 가능한 제어(버튼 등)에 사용됩니다.Scroll제어 패턴은 스크롤 가능한 뷰포트(리스트 박스, 리스트 뷰, 콤보 박스 등)인 컨트롤에 사용됩니다.각 제어 패턴은 개별 기능을 나타내기 때문에 이러한 패턴을 조합하여 특정 제어가 지원하는 모든 기능 세트를 설명할 수 있습니다.

특성.

UIA 공급자는 UIA 요소와 제어 패턴의 속성을 노출합니다.이러한 속성을 통해 UIA 클라이언트응용 프로그램은 사용자 인터페이스(UI), 특히 정적 데이터와 동적 데이터를 모두 포함한 컨트롤에 대한 정보를 검출할 수 있습니다.

이벤트

UIA 이벤트 알림은 화면 리더 및 화면 돋보기 등의 보조 기술(AT)의 주요 기능입니다.이러한 UIA 클라이언트는 UIA 내에서 발생하는 UIA 공급자에 의해 발생한 이벤트를 추적하고 이 정보를 사용하여 최종 사용자에게 통지합니다.

클라이언트가 이벤트를 수신하고 있지 않은 경우 클라이언트가 이러한 이벤트에 가입되어 있는지 여부에 따라 공급자응용 프로그램이 이벤트를 선택적으로 발생시킬 수 있도록 함으로써 효율이 향상됩니다.

텍스트 패턴

UIA는 UIA 지원 플랫폼에서 텍스트컨트롤의 텍스트콘텐츠(포맷 및 스타일 속성 포함)를 공개합니다.이러한 컨트롤에는, Microsoft 가 포함됩니다(이에 한정되는 것은 아닙니다).NET 프레임워크TextBox그리고.RichTextBoxWin32에 상당하는 제품도 있습니다.

컨트롤의 텍스트 내용을 노출하려면TextPattern제어 패턴 - 텍스트 컨테이너의 내용을 텍스트 스트림으로 나타냅니다.결국.TextPattern의 지원이 필요합니다.TextPatternRange형식 및 스타일 속성을 표시합니다. TextPatternRange서포트TextPattern텍스트 컨테이너 내의 연속된 텍스트 범위를 나타내는 것으로써,Start그리고.End엔드 포인트여러 텍스트 스팬 또는 분리된 텍스트 스팬을 두 개 이상 표시할 수 있습니다.TextPatternRange물건들. TextPatternRange는 클론, 선택, 비교, 취득, 트래버설 등의 기능을 지원합니다.

자동화된 테스트를 위한 UI 자동화

UIA는 자동화된 테스트 시나리오에서 프로그래밍 방식으로 액세스하기 위한 프레임워크로도 유용할 수 있습니다.접근성을 위한 보다 정교한 솔루션을 제공할 뿐만 아니라 자동화된 테스트를 위한 강력한 기능을 제공하도록 특별히 설계되었습니다.

프로그램 액세스를 통해 기존 사용자 상호 작용에 의해 노출된 모든 상호 작용 및 경험을 코드를 통해 모방할 수 있습니다.UIA는 다음 5가지 컴포넌트를 통해 프로그램 액세스를 가능하게 합니다.

  • UIA 트리는 접근성 및 자동화를 위해 UI의 논리 구조를 통해 쉽게 탐색할 수 있도록 합니다.
  • UI 자동화 요소는 UI의 개별 구성 요소입니다.
  • UI 자동화 속성은 UI 요소 또는 제어 패턴에 대한 특정 정보를 제공합니다.
  • UI 자동화 제어 패턴은 컨트롤 기능 또는 기능의 특정 측면을 정의합니다. 특성, 방법, 이벤트 및 구조 정보로 구성될 수 있습니다.
  • UI Automation Events는 UIA 정보의 변경 및 알림에 응답하는 트리거를 제공합니다.

유용성

UIA는 처음에 Windows Vista 및 Windows Server 2008에서 사용 가능했으며 의 일부로 Windows XP 및 Windows Server 2003에서도 사용 가능했습니다.NET Framework 3.0.Windows 7 [5]까지의 후속 Windows 버전과 통합되었습니다.

Windows 플랫폼 외에 올리브 프로젝트(Mono Core용 애드온 라이브러리 세트)도 있습니다.NET Framework 지원)에는 WPF 서브셋이 포함되어 있습니다(PresentationFramework그리고.WindowsBase및 UI [6]Automation을 참조해 주세요.

Novell의 Mono Accessibility 프로젝트는 Mono 프레임워크를 대상으로 한 UIA Provider 및 Client 사양을 구현한 것입니다.또한 이 프로젝트는 Linux 지원 테크놀로지(AT)용 Accessibility Toolkit(ATK)에 대한 브릿지를 제공합니다.또한 Novell은 UIA 기반 AT가 ATK를 [7]구현하는 애플리케이션과 상호 작용하기 위한 브리지 작업을 진행하고 있습니다.

관련 테크놀로지 및 상호운용성

  • Microsoft Active Accessibility (MSAA) :UIA는 MSAA의 후계자입니다.단, MSAA 기반의 어플리케이션이 아직 존재하기 때문에 UIA 어플리케이션과 MSAA 어플리케이션 간의 통신을 가능하게 하기 위해 브릿지가 사용됩니다.따라서 MSAA-to-UIA Proxy와 UIA-to-MSAA Bridge가 개발되었습니다.전자는 MSAA 정보를 소비하고 UIA 클라이언트 API를 통해 사용할 수 있는 컴포넌트입니다.후자는 UIA를 [8]구현하는 MSAA 액세스애플리케이션을 사용하는 클라이언트애플리케이션을 이노블로 합니다.
  • 액세스 가능한 리치 인터넷 애플리케이션(ARIA):UIAAriaRole그리고.AriaProperties속성은 HTML 요소(웹 브라우저에서 자동화 요소로 노출될 수 있음)에 대응하는 ARIA 속성 값에 대한 액세스를 제공할 수 있습니다.ARIA 속성에서 UIA로의 일반적인 매핑도 사용할 [3]수 있습니다.
  • Windows Automation API: Windows 7에서 Microsoft는 Windows Automation API라고 불리는 프레임워크로 접근성 기술을 패키징하고 있습니다.MSAA와 UIA는 모두 이 프레임워크에 포함됩니다.이전 버전의 Windows 에 대해서는, KB971513 [9]을 참조해 주세요.
  • 단일 접근성 프로젝트:2007년 11월 7일 Microsoft와 Novell Inc.는 상호운용성 계약을 1년간 체결한 후 접근성을 [10][11]포함하도록 계약을 연장한다고 발표했습니다.특히 Novell은 UIA 프레임워크가 SUSE Linux Enterprise Desktop, Red Hat Enterprise Linux 및 Ubuntu Linux와 함께 제공되는 Linux Accessibility Toolkit(ATK) 등의 기존 Linux 접근성 프로젝트와 연동할 수 있는 오픈 소스 어댑터를 개발할 예정입니다.이로 인해 UIA는 최종적으로 크로스 플랫폼이 됩니다.

메모들

  1. ^ 대릴 K.Taft: Microsoft는 크로스 플랫폼 접근성 기술, EWeek(2005-11-28)을 추진하고 있으며, 2007-02-07에 접속하고 있습니다.
  2. ^ Microsoft: Microsoft의 새로운 접근성 모델은 업계용 크로스 플랫폼 솔루션으로 제공되며 2007-02-06에 접속합니다.
  3. ^ a b Microsoft 개발자 네트워크:UI 자동화 사양 및 커뮤니티 약속
  4. ^ Windows Automation API 설명
  5. ^ Microsoft: UI 자동화 개요, 2007-02-07에 액세스.
  6. ^ 올리브
  7. ^ Miguel de Icaza 및 Philippe Cohen: Mono, Mainsoft크로스 플랫폼 엔터프라이즈 개발 2008-06-17, Enterprise Open Source Magazine(2007-01-14)에서 아카이브, 2007-02-07에 액세스.
  8. ^ Microsoft 개발자 네트워크(MSDN): Microsoft, UI AutomationMicrosoft Active Accessibility, 2007-02-07에 액세스.
  9. ^ KB971513: Windows Automation API 다운로드
  10. ^ Microsoft: Microsoft와 Novell이 상호 운용성의 해를 맞이하여 콜라보레이션 계약을 확대합니다.
  11. ^ 흑백 접근성 프로젝트 홈페이지

레퍼런스

외부 링크