Udostępnij za pośrednictwem


Drzewo automatyzacji interfejsu użytkownika — omówienie

Produkty technologii pomocniczej i skrypty testowe nawigują po drzewie automatyzacji interfejsu użytkownika firmy Microsoft, aby zebrać informacje o interfejsie użytkownika i jego elementach.

W drzewie automatyzacji interfejsu użytkownika jest element główny, który reprezentuje okno pulpitu systemu Windows ("pulpit"), a jego elementy podrzędne 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 listy. Te elementy mogą zawierać komponenty, takie jak elementy listy.

Drzewo automatyzacji interfejsu użytkownika nie jest stałą strukturą. Rzadko jest postrzegany w jego całkowitej całości, ponieważ może zawierać tysiące elementów. Elementy drzewa automatyzacji interfejsu użytkownika są tworzone w miarę potrzeb klienta, a struktura drzewa zmienia się, gdy elementy są dodawane, przenoszone lub usuwane.

Dostawcy automatyzacji interfejsu użytkownika obsługują drzewo automatyzacji interfejsu użytkownika, implementując nawigację między elementami w fragmencie. Fragment jest kompletnym poddrzewem elementów z określonej struktury i ma element główny (nazywany fragmentem głównym), który jest zwykle hostowany w oknie.

Dostawcy nie są zainteresowani nawigacją między kontrolkami. Jest to zarządzane przez rdzeń automatyzacji interfejsu użytkownika, który używa informacji od domyślnych dostawców okien.

Ten temat zawiera następujące sekcje.

Widoki drzewa automatyzacji interfejsu użytkownika

Drzewo automatyzacji interfejsu użytkownika można filtrować w celu utworzenia widoków zawierających tylko te elementy automatyzacji interfejsu użytkownika, które są istotne dla określonego klienta. Takie podejście umożliwia klientom dostosowanie struktury prezentowanej za pomocą automatyzacji interfejsu użytkownika do określonych potrzeb.

Klient może dostosować widok, określając zakres i filtrując. Określenie zakresu określa zakres widoku, zaczynając od elementu podstawowego. Na przykład aplikacja może chcieć znaleźć tylko bezpośrednie elementy podrzędne pulpitu lub wszystkie elementy podrzędne okna aplikacji. Filtrowanie definiuje typy elementów, które są uwzględnione w widoku.

Dostawcy automatyzacji interfejsu użytkownika obsługują filtrowanie przez definiowanie właściwości elementów, w tym właściwości IUIAutomationElement::IsControlElement i IUIAutomationElement::IsContentElement.

Automatyzacja interfejsu użytkownika udostępnia trzy widoki domyślne: widok pierwotny, widok sterowania i widok zawartości. Te widoki są definiowane przez typ wykonywanego filtrowania. Zakres dowolnego widoku jest definiowany przez aplikację. Aplikacja może stosować inne filtry we właściwościach; na przykład aby uwzględnić tylko włączone kontrolki w widoku kontrolki.

Widok pierwotny

Podstawowy widok drzewa automatyzacji UI to pełne drzewo elementów automatyzacji, dla których pulpit jest korzeniem. Widok pierwotny jest ściśle zgodny z natywną strukturą programową aplikacji i jest najbardziej szczegółowym widokiem dostępnym. Jest to również podstawa, na której zbudowane są inne widoki drzewa. Ponieważ ten widok zależy od podstawowej struktury interfejsu użytkownika, surowy widok przycisku Windows Presentation Foundation (WPF) różni się od surowego widoku przycisku Microsoft Win32.

Widok pierwotny jest uzyskiwany przez wyszukiwanie elementów bez określania właściwości lub przy użyciu interfejsu IUIAutomation::RawViewWalker, do uzyskania interfejsu IUIAutomationTreeWalker do nawigacji po drzewie.

Widok sterowania

Widok kontrolny jest podzbiorem widoku nieprzetworzonego. Zawiera tylko te elementy interfejsu użytkownika, które mają właściwość IUIAutomationElement::IsControlElement ustawioną na true.

Widok kontrolki zawiera elementy interfejsu użytkownika, które udostępniają użytkownikowi informacje lub umożliwiają użytkownikowi wykonanie akcji. Są to elementy interfejsu użytkownika, które są najbardziej interesujące dla zautomatyzowanych aplikacji do testowania.

Widok sterowania zawiera również nieinteraktywne elementy interfejsu użytkownika, które przyczyniają się do logicznej struktury interfejsu użytkownika. Obejmują one kontenery elementów, takie jak nagłówki widoku listy, paski narzędzi, menu i pasek stanu. Inne nieinteraktywne elementy, które są wyświetlane w widoku kontrolki, to grafika zawierająca informacje i tekst statyczny w oknie dialogowym.

Elementy nieinteraktywne używane tylko do celów układowych lub dekoracyjnych, takich jak panele używane do układania kontrolek w oknie dialogowym, nie są wyświetlane w widoku sterowania.

Widok kontrolny drzewa automatyzacji UI jest ściśle odwzorowywany na strukturę UI postrzeganą przez użytkownika końcowego. Ułatwia to produkt technologii pomocniczej opisujący interfejs użytkownika użytkownikowi końcowemu i ułatwiający użytkownikom końcowym interakcję z aplikacją.

Widok kontrolki jest uzyskiwany przez wyszukanie elementów, które mają IUIAutomationElement::IsControlElement właściwość ustawioną na wartość true, lub przy użyciu ControlViewWalker, aby uzyskać interfejs IUIAutomationTreeWalker do nawigowania po drzewie.

Widok zawartości

Widok zawartości drzewa automatyzacji interfejsu użytkownika jest podzbiorem widoku sterowania. Zawiera tylko te elementy UI, które mają zarówno właściwość IUIAutomationElement::IsControlElement, jak i IUIAutomationElement::IsContentElement ustawioną na TRUE.

Widok zawartości zawiera elementy interfejsu użytkownika, które przekazują rzeczywiste informacje w interfejsie użytkownika, w tym elementy interfejsu użytkownika, które mogą odbierać fokus klawiatury i jakiś tekst, który nie jest etykietą elementu interfejsu użytkownika. Są to elementy interfejsu użytkownika, które są najbardziej interesujące dla aplikacji czytnika zawartości ekranu. Na przykład wartości w polu kombi listy rozwijanej są wyświetlane w widoku treści, ponieważ wartości reprezentują informacje używane przez użytkownika końcowego.

W widoku zawartości pole kombi i pole listy są reprezentowane jako kolekcja elementów interfejsu użytkownika, w których można wybrać jeden lub więcej niż jeden element. Fakt, że jeden element pozostaje zawsze otwarty, a drugi można rozwinąć i zwinąć, nie ma znaczenia w widoku zawartości, ponieważ ma on na celu wyświetlanie danych lub treści prezentowanej użytkownikowi.

Widok zawartości jest uzyskiwany przez wyszukiwanie elementów, które mają zarówno właściwość IsControlElement, jak i właściwość CurrentIsContentElement ustawioną na TRUE, lub przy użyciu IUIAutomation::ContentViewWalker, aby uzyskać interfejs IUIAutomationTreeWalker do nawigacji po drzewie.

Na poniższych obrazach przedstawiono różnice między widokiem kontrolki a widokiem zawartości. Pierwszy obrazek przedstawia proste pole kombi z trzema elementami na liście rozwijanej. Drugie zdjęcie pokazuje, jak elementy interfejsu użytkownika pola kombinowanego są wyświetlane w widokach sterowania i zawartości aplikacji UISpy.exe.

zrzut ekranu prostej listy rozwijanej z trzema elementami

zrzut ekranu aplikacji uispy z widokami kontrolek i zawartości elementów listy rozwijanej

koncepcyjny

Tworzenie obiektu CUIAutomation

Uzyskiwanie elementów automatyzacji interfejsu użytkownika

Podstawy automatyzacji interfejsu użytkownika