Automatyzacja interfejsu użytkownika firmy Microsoft - Microsoft UI Automation

Microsoft UI Automation (UIA) to interfejs programowania aplikacji (API), który umożliwia dostęp, identyfikację i manipulowanie elementami interfejsu użytkownika (UI) innej aplikacji.

UIA ma na celu zapewnienie dostępności interfejsu użytkownika i jest następcą Microsoft Active Accessibility . Ułatwia również automatyzację testów za pomocą GUI i jest silnikiem, na którym opiera się wiele narzędzi do automatyzacji testów . Narzędzia RPA używają go również do automatyzacji aplikacji w procesach biznesowych .

Dostawcy nieruchomości UIA obsługują zarówno programy Win32, jak i .NET .

Najnowsza specyfikacja UIA jest częścią specyfikacji obietnicy społeczności Microsoft UI Automation . Microsoft twierdzi, że jednym z celów projektowych była możliwość przenoszenia na platformy inne niż Microsoft Windows. Od tego czasu został przeniesiony na Mono .

Historia

W 2005 roku Microsoft wydał UIA jako następcę frameworka MSAA .

Managed UI Automation API został wydany jako część .NET Framework 3.0 . Natywny interfejs API automatyzacji interfejsu użytkownika (dostawca) jest częścią zestawu SDK systemu Windows Vista i Windows Server 2008 i jest również rozpowszechniany z platformą .NET Framework.

Interfejs UIA jest dostępny po wyjęciu z pudełka w systemie Windows 7 jako część interfejsu Windows Automation API 3.0 oraz jako osobny plik do pobrania dla systemów Windows XP, Windows Vista oraz Windows Server 2003 i 2008.

Motywacja i cele

Jako następca MSAA, UIA dąży do osiągnięcia następujących celów:

  • Zapewnij wydajną wydajność klienta bez zmuszania klientów do podłączania się do procesu aplikacji docelowej.
  • Pokaż więcej informacji o interfejsie użytkownika.
  • Współistnieć i używać MSAA, ale nie dziedziczą problemów, które istnieją w MSAA.
  • Zapewnij prostą do wdrożenia alternatywę dla MSAA.

Przegląd techniczny

Rama

Po stronie klienta UIA zapewnia interfejs .NET w UIAutomationClient.dll asemblerze i interfejs COM zaimplementowany bezpośrednio w UIAutomationCore.dll .

Po stronie serwera UIAutomationCore.dll jest wprowadzany do wszystkich lub wybranych procesów na bieżącym pulpicie w celu wykonania pobierania danych w imieniu klienta. Biblioteka DLL może również ładować wtyczki UIA (zwane dostawcami ) do swojego procesu hosta w celu wyodrębnienia danych przy użyciu różnych technik.

UIA ma cztery główne komponenty dostawcy i klienta, jak pokazano w poniższej tabeli.

Składnik Opis
UIAutomationCore (UIAutomationCore.dll i zależne) Kod bazowy (czasami nazywany rdzeniem UIA), który obsługuje komunikację między dostawcami a klientami. UI Automation Core oferuje również interfejsy API dostawcy i klienta dla niezarządzanych aplikacji i klientów; Aplikacje niezarządzane (klienci lub dostawcy) nie wymagają zestawów zarządzanych wymienionych poniżej.
Managed Provider API (UIAutomationProvider.dll i elementy zależne)

Zestaw definicji i funkcji interfejsów, które są implementowane przez zarządzane aplikacje dostawcy UIA. Dostawcy to obiekty, które dostarczają informacji o elementach interfejsu użytkownika i odpowiadają na programistyczne dane wejściowe.

Managed Client API (UIAutomationClient.dll i zależne) Zestaw definicji i funkcji interfejsów dla zarządzanych aplikacji klienckich UIA.
UIAutomationClientsideProviders.dll Zestaw implementacji dostawcy UIA dla starszych formantów Win32 i aplikacji MSAA. Ten dostawca po stronie klienta jest domyślnie dostępny dla zarządzanych aplikacji klienckich.

Elementy

UIA udostępnia każdy element interfejsu użytkownika aplikacjom klienckim jako element automatyzacji. Elementy są zawarte w strukturze drzewa, z pulpitem jako elementem głównym.

Obiekty Automation Element ujawniają typowe właściwości elementów interfejsu użytkownika, które reprezentują. Jedną z tych właściwości jest typ kontrolki, który definiuje jej podstawowy wygląd i funkcjonalność jako pojedynczą rozpoznawalną jednostkę (np. Przycisk lub pole wyboru).

Ponadto elementy uwidaczniają wzorce kontrolek, które zapewniają właściwości specyficzne dla ich typów kontrolek. Wzorce sterowania ujawniają również metody, które umożliwiają klientom uzyskanie dalszych informacji o elemencie i dostarczanie danych wejściowych.

Klienci mogą filtrować nieprzetworzony widok drzewa jako widok kontrolny lub widok zawartości. Aplikacje mogą również tworzyć widoki niestandardowe.

Drzewo

W drzewie UIA znajduje się element główny, który reprezentuje bieżący pulpit i którego elementy potomne reprezentują okna aplikacji. Każdy z tych elementów podrzędnych może zawierać elementy reprezentujące elementy interfejsu użytkownika, takie jak menu, przyciski, paski narzędzi i pola list. Te elementy z kolei mogą zawierać inne elementy, takie jak elementy listy.

Drzewo UIA nie jest ustaloną strukturą i rzadko jest widoczne w całości, ponieważ może zawierać tysiące elementów. Części drzewa są budowane, gdy są potrzebne, a drzewo może podlegać zmianom w miarę dodawania, przenoszenia lub usuwania elementów.

Rodzaje sterowania

Typy kontrolek UIA to dobrze znane identyfikatory, których można użyć do wskazania, jaki rodzaj kontrolki reprezentuje określony element, na przykład pole kombi lub przycisk.

Posiadanie dobrze znanego identyfikatora umożliwia urządzeniom technologii wspomagającej (AT) łatwiejsze określenie, jakie typy elementów sterujących są dostępne w interfejsie użytkownika (UI) i jak współdziałać z nimi. Czytelna dla człowieka reprezentacja informacji o typie kontrolki UIA jest dostępna jako LocalizedControlType właściwość, którą mogą dostosowywać twórcy formantu lub aplikacji.

Wzorce kontroli

Wzorce kontrolek umożliwiają kategoryzowanie i uwidacznianie funkcji kontrolki niezależnie od typu kontrolki lub wyglądu kontrolki.

UIA używa wzorców sterowania do reprezentowania typowych zachowań kontrolnych. Na przykład Invoke wzorzec kontrolki jest używany dla kontrolek, które można wywołać (takich jak przyciski), a Scroll wzorzec kontrolki jest używany dla kontrolek, które są przewijalnymi rzutniami (takimi jak pola listy, widoki list lub pola kombi). Ponieważ każdy wzorzec kontrolki reprezentuje oddzielną funkcję, można je łączyć w celu opisania pełnego zestawu funkcji obsługiwanych przez określoną kontrolkę.

Nieruchomości

Dostawcy UIA ujawniają właściwości elementów UIA i wzorce kontrolne. Te właściwości umożliwiają aplikacjom klienckim UIA odnajdywanie informacji o elementach interfejsu użytkownika (UI), zwłaszcza kontrolkach, w tym danych statycznych i dynamicznych.

Wydarzenia

Powiadomienia o zdarzeniach UIA to kluczowa funkcja dla technologii wspomagających (AT), takich jak czytniki ekranu i lupy. Ci klienci UIA śledzą zdarzenia zgłaszane przez dostawców UIA, które występują w UIA, i wykorzystują te informacje do powiadamiania użytkowników końcowych.

Wydajność zwiększa się, umożliwiając aplikacjom dostawców selektywne zgłaszanie zdarzeń, w zależności od tego, czy jacyś klienci są subskrybowani na te zdarzenia, czy też nie mają ich wcale, jeśli żaden klient nie nasłuchuje żadnych zdarzeń.

TextPattern

UIA ujawnia zawartość tekstową, w tym atrybuty formatu i stylu, kontrolek tekstu na platformach obsługujących UIA. Te kontrolki obejmują między innymi Microsoft .NET Framework TextBox oraz RichTextBox ich odpowiedniki dla Win32.

Ujawnienie zawartości tekstowej kontrolki odbywa się za pomocą TextPattern wzorca kontrolki, który reprezentuje zawartość kontenera tekstu jako strumień tekstu. Z kolei TextPattern wymaga wsparcia TextPatternRange klasy, aby wyeksponować atrybuty formatu i stylu. TextPatternRange obsługuje TextPattern , reprezentując ciągły zakres tekstu w kontenerze tekstu z punktami końcowymi Start i End . Wiele lub rozłącznych zakresów tekstu może być reprezentowanych przez więcej niż jeden TextPatternRange obiekt. TextPatternRange obsługuje funkcje takie jak klonowanie, selekcja, porównanie, pobieranie i przechodzenie.

Automatyzacja interfejsu użytkownika do automatycznego testowania

UIA może być również przydatna jako platforma do programowego dostępu w scenariuszach automatycznego testowania. Oprócz dostarczania bardziej wyrafinowanych rozwiązań w zakresie dostępności, jest również specjalnie zaprojektowany, aby zapewnić solidną funkcjonalność dla testów automatycznych.

Dostęp programowy umożliwia imitowanie za pomocą kodu wszelkich interakcji i doświadczeń ujawnionych przez tradycyjne interakcje użytkownika. UIA umożliwia programistyczny dostęp za pośrednictwem pięciu komponentów:

  • Drzewo UIA ułatwia nawigację po logicznej strukturze interfejsu użytkownika w celu ułatwienia dostępu i automatyzacji.
  • Elementy automatyzacji interfejsu użytkownika to poszczególne komponenty interfejsu użytkownika.
  • Właściwości automatyzacji interfejsu użytkownika zapewniają określone informacje o elementach interfejsu użytkownika lub wzorcu sterowania.
  • Wzorce sterowania automatyzacją interfejsu użytkownika definiują określony aspekt funkcjonalności lub funkcji kontrolki; mogą składać się z informacji o właściwościach, metodzie, zdarzeniach i strukturze.
  • Zdarzenia automatyzacji interfejsu użytkownika zapewniają wyzwalacz reagowania na zmiany i powiadomienia w informacjach UIA.

Dostępność

UIA był początkowo dostępny w systemach Windows Vista i Windows Server 2008, a także został udostępniony w systemach Windows XP i Windows Server 2003 jako część .NET Framework 3.0. Został zintegrowany ze wszystkimi kolejnymi wersjami Windows, aż do Windows 7 włącznie .

Oprócz platform Windows, projekt Olive (który jest zbiorem dodatkowych bibliotek dla rdzenia Mono, z myślą o obsłudze .NET Framework) zawiera podzbiór WPF ( PresentationFramework i WindowsBase ) oraz automatyzacji interfejsu użytkownika.

Projekt Novell Mono Accessibility jest implementacją specyfikacji UIA Provider and Client przeznaczonych dla platformy Mono. Ponadto projekt zapewnia pomost do zestawu narzędzi ułatwień dostępu (ATK) dla technologii wspomagających Linuksa (AT). Novell pracuje również nad pomostem dla AT-ów opartych na UIA, aby współdziałać z aplikacjami, które implementują ATK.

Powiązana technologia i interoperacyjność

  • Microsoft Active Accessibility (MSAA) : UIA jest następcą MSAA. Jednakże, ponieważ nadal istnieją aplikacje oparte na MSAA, mosty są używane do umożliwienia komunikacji między aplikacjami UIA i MSAA. Dzięki temu informacje mogą być wymieniane między dwoma interfejsami API, opracowano serwer proxy MSAA-to-UIA i most UIA-to-MSAA. Pierwszy z nich to składnik, który zużywa informacje MSAA i udostępnia je za pośrednictwem interfejsu API klienta UIA. Ta ostatnia umożliwia aplikacjom klienckim korzystającym z aplikacji dostępowych MSAA, które implementują UIA.
  • Dostępne bogate aplikacje internetowe (ARIA) : UIA AriaRole i AriaProperties właściwości mogą zapewniać dostęp do wartości atrybutów ARIA odpowiadających elementowi HTML (który może być widoczny jako element automatyzacji przez przeglądarki internetowe). Dostępne jest również ogólne mapowanie atrybutów ARIA na UIA.
  • Windows Automation API : Począwszy od Windows 7, Microsoft pakuje swoje technologie ułatwień dostępu w ramach struktury zwanej Windows Automation API. Zarówno MSAA, jak i UIA będą częścią tej struktury. W przypadku starszych wersji systemu Windows zobacz KB971513.
  • Projekt Mono Accessibility : 7 listopada 2007 r. Microsoft i Novell Inc. , po zakończeniu rocznej umowy dotyczącej interoperacyjności, ogłosiły, że rozszerzą umowę o dostępność. W szczególności ogłoszono, że Novell opracuje adapter typu open source, który umożliwi platformie UIA współpracę z istniejącymi projektami dostępności systemu Linux , takimi jak Linux Accessibility Toolkit (ATK), który jest dostarczany z SUSE Linux Enterprise Desktop , Red Hat Enterprise Linux i Ubuntu Linux . To ostatecznie uczyniłoby UIA wieloplatformowym.

Uwagi

Bibliografia

Linki zewnętrzne