Udostępnij za pomocą


Używanie automatyzacji interfejsu użytkownika do testowania automatycznego

Notatka

Ta dokumentacja jest przeznaczona dla deweloperów programu .NET Framework, którzy chcą używać zarządzanych klas automatyzacji interfejsu użytkownika zdefiniowanych w przestrzeni nazw System.Windows.Automation. Aby uzyskać najnowsze informacje na temat automatyzacji interfejsu użytkownika, zobacz Interfejs API automatyzacji systemu Windows: automatyzacja interfejsu użytkownika.

W tym omówieniu opisano, jak automatyzacja interfejsu użytkownika firmy Microsoft może być przydatna jako struktura dostępu programowego w scenariuszach zautomatyzowanego testowania.

Automatyzacja interfejsu użytkownika udostępnia ujednolicony model obiektów, który umożliwia wszystkim strukturom interfejsu użytkownika uwidacznianie złożonych i bogatych funkcji w sposób dostępny i łatwy w zautomatyzowany sposób.

Automatyzacja interfejsu użytkownika została opracowana jako następca usługi Microsoft Active Accessibility. Aktywna dostępność to istniejąca struktura zaprojektowana w celu zapewnienia rozwiązania do udostępniania kontrolek i aplikacji. Aktywne ułatwienia dostępu nie zostały zaprojektowane z myślą o automatyzacji testów, mimo że ewoluowały w tej roli ze względu na bardzo podobne wymagania dotyczące ułatwień dostępu i automatyzacji. Automatyzacja interfejsu użytkownika, oprócz udostępniania bardziej wyrafinowanych rozwiązań ułatwień dostępu, została również zaprojektowana w celu zapewnienia niezawodnych funkcji do testowania automatycznego. Na przykład aktywna dostępność opiera się na jednym interfejsie, który udostępnia informacje o interfejsie użytkownika i zbiera informacje wymagane przez produkty AT; Automatyzacja interfejsu użytkownika oddziela dwa modele.

Zarówno dostawca, jak i klient są zobowiązani do zaimplementowania automatyzacji interfejsu użytkownika, aby była przydatna jako narzędzie do testowania automatycznego. Dostawcy automatyzacji interfejsu użytkownika to aplikacje, takie jak Microsoft Word, Excel i inne aplikacje lub kontrolki innych firm oparte na systemie operacyjnym Microsoft Windows. Klienci automatyzacji interfejsu użytkownika obejmują zautomatyzowane skrypty testowe i aplikacje technologii pomocniczej.

Notatka

Celem tego przeglądu jest zaprezentowanie nowych i ulepszonych funkcji zautomatyzowanego testowania automatyzacji interfejsu użytkownika. To omówienie nie jest przeznaczone do dostarczania informacji na temat funkcji ułatwień dostępu i nie będzie dotyczyć ułatwień dostępu innych niż w razie potrzeby.

Automatyzacja interfejsu użytkownika u dostawcy

Aby interfejs użytkownika mógł zostać zautomatyzowany, deweloper aplikacji lub kontrolki musi sprawdzić, jakie akcje użytkownik końcowy może wykonać na obiekcie interfejsu użytkownika przy użyciu standardowej interakcji za pomocą klawiatury i myszy.

Po zidentyfikowaniu tych kluczowych akcji odpowiednie wzorce sterowania automatyzacji interfejsu użytkownika (czyli wzorce kontrolek, które odzwierciedlają funkcjonalność i zachowanie elementu interfejsu użytkownika) powinny być implementowane na kontrolce. Na przykład interakcja użytkownika z kontrolką pola kombi (na przykład okno dialogowe uruchamiania) zwykle polega na rozwinięciu i zwijaniu pola kombi w celu ukrycia lub wyświetlenia listy elementów, wybrania elementu z tej listy lub dodania nowej wartości za pomocą wprowadzania za pomocą klawiatury.

Notatka

W przypadku innych modeli ułatwień dostępu deweloperzy muszą zbierać informacje bezpośrednio z poszczególnych przycisków, menu lub innych kontrolek. Niestety każdy typ kontrolki ma dziesiątki drobnych odmian. Innymi słowy, mimo że dziesięć odmian naciśnięcia może działać w taki sam sposób i wykonać tę samą funkcję, wszystkie muszą być traktowane jako unikatowe kontrolki. Nie ma możliwości, aby wiedzieć, że te kontrolki są funkcjonalnie równoważne. Wzorce kontrolek zostały opracowane w celu reprezentowania tych typowych zachowań kontrolek. Aby uzyskać więcej informacji, zobacz Omówienie wzorców kontrolek automatyzacji interfejsu użytkownika.

Implementowanie automatyzacji interfejsu użytkownika

Jak wspomniano wcześniej, bez ujednoliconego modelu udostępnianego przez automatyzację interfejsu użytkownika narzędzia testowe i deweloperzy muszą znać informacje specyficzne dla platformy, aby uwidocznić właściwości i zachowania kontrolek w tej strukturze. Ponieważ istnieje kilka różnych struktur interfejsu użytkownika obecnych w dowolnym momencie w systemach operacyjnych Windows, w tym Win32, Windows Forms i Windows Presentation Foundation (WPF), może to być trudne zadanie do testowania wielu aplikacji z kontrolkami, które wydają się podobne. Na przykład w poniższej tabeli przedstawiono nazwy właściwości specyficzne dla frameworka wymagane do pobrania nazwy (lub tekstu) skojarzonej z kontrolką przycisku i pokazuje jedną równoważną właściwość Automatyzacji interfejsu użytkownika.

Typ kontrolki automatyzacji interfejsu użytkownika Struktura interfejsu użytkownika Właściwość specyficzna dla struktury Właściwość automatyzacji interfejsu użytkownika
Przycisk Windows Presentation Foundation Zawartość WłasnośćNazwa
Przycisk Win32 Podpis WłasnośćNazwa
Obraz HTML Alt WłasnośćNazwa

Dostawcy automatyzacji interfejsu użytkownika są odpowiedzialni za mapowanie właściwości kontrolek specyficznych dla platformy na równoważne właściwości automatyzacji interfejsu użytkownika.

Informacje na temat implementacji automatyzacji interfejsu użytkownika przez dostawcę można znaleźć w Dostawcy Automatyzacji Interfejsu Użytkownika dla Managed Code. Informacje na temat implementowania wzorców kontrolek są dostępne w sekcji "Automatyzacja interfejsu użytkownika - wzorce kontrolek" oraz "Automatyzacja interfejsu użytkownika - wzorzec tekstu".

Automatyzacja interfejsu użytkownika w kliencie

Celem wielu narzędzi i scenariuszy testów automatycznych jest spójne i powtarzalne manipulowanie interfejsem użytkownika. Może to obejmować testowanie jednostkowe określonych kontrolek aż po rejestrowanie i odtwarzanie skryptów testowych, które iterują przez serię ogólnych działań w grupie kontrolek.

Powikłanie wynikające z automatycznych aplikacji polega na trudności z synchronizacją testu z dynamicznym celem. Na przykład kontrolka pola listy, taka jak ta zawarta w Menedżerze zadań systemu Windows, wyświetla listę aktualnie uruchomionych aplikacji. Ponieważ elementy w polu listy są dynamicznie aktualizowane poza kontrolą aplikacji testowej, próba powtórzenia zaznaczenia określonego elementu w polu listy z dowolną spójnością jest niemożliwa. Podobne problemy mogą również wystąpić podczas próby powtórzenia prostych zmian fokusu w interfejsie użytkownika, który znajduje się poza kontrolą aplikacji testowej.

Dostęp programowy

Dostęp programistyczny zapewnia możliwość naśladowania poprzez kod dowolnych interakcji i doświadczeń uwidocznionych przez tradycyjne wprowadzanie myszy i klawiatury. Automatyzacja interfejsu użytkownika umożliwia dostęp programowy za pośrednictwem pięciu składników:

Kluczowe właściwości automatyzacji testów

Możliwość unikatowego identyfikowania, a następnie lokalizowania dowolnej kontrolki w interfejsie użytkownika, zapewnia podstawę dla zautomatyzowanych aplikacji testowych do działania w tym interfejsie użytkownika. Istnieje kilka właściwości automatyzacji interfejsu użytkownika firmy Microsoft używanych przez klientów i dostawców, które pomagają w tym celu.

Identyfikator automatyzacji

Unikatowo identyfikuje element automatyzacji wśród jego równorzędnych elementów. AutomationIdProperty nie jest zlokalizowane, w przeciwieństwie do właściwości, takiej jak NameProperty, która jest zwykle lokalizowana, jeśli produkt jest dostarczany w wielu językach. Zobacz użytkuj właściwość AutomationID.

Notatka

AutomationIdProperty nie gwarantuje unikatowej tożsamości w całym drzewie automatyzacji. Na przykład aplikacja może zawierać kontrolkę menu z wieloma elementami menu najwyższego poziomu, które z kolei mają wiele elementów menu podrzędnego. Te pomocnicze elementy menu mogą być identyfikowane przez schemat ogólny, taki jak "Item1, Item 2, Item3 itp.", zezwalając na zduplikowane identyfikatory dla elementów menu najwyższego poziomu.

Typ kontrolki

Określa typ kontrolki reprezentowany przez element automatyzacji. Istotne informacje można wywnioskować na podstawie wiedzy o typie kontrolki. Zobacz omówienie typów kontrolek automatyzacji interfejsu użytkownika .

WłasnośćNazwa

Jest to ciąg tekstowy, który identyfikuje lub wyjaśnia kontrolkę. NameProperty należy używać ostrożnie, ponieważ może być zlokalizowane. Zobacz omówienie właściwości automatyzacji interfejsu użytkownika .

Implementowanie automatyzacji interfejsu użytkownika w aplikacji testowej

Krok Opis
Dodaj odwołania do automatyzacji interfejsu użytkownika. W tym miejscu wymieniono bibliotekę DLL automatyzacji interfejsu użytkownika niezbędną dla klientów automatyzacji interfejsu użytkownika.

— UIAutomationClient.dll zapewnia dostęp do interfejsów API po stronie klienta automatyzacji interfejsu użytkownika.
- UIAutomationClientSideProvider.dll zapewnia możliwość automatyzowania kontrolek Win32. Zobacz Obsługa automatyzacji interfejsu użytkownika dla standardowych kontrolek.
- UIAutomationTypes.dll zapewnia dostęp do określonych typów zdefiniowanych w UI Automation.
Dodaj przestrzeń nazw System.Windows.Automation. Ta przestrzeń nazw zawiera wszystkie elementy potrzebne klientom do korzystania z funkcji automatyzacji interfejsu użytkownika, poza obsługą tekstu.
Dodaj przestrzeń nazw System.Windows.Automation.Text. Ta przestrzeń nazw zawiera wszystko, czego potrzebują klienci automatyzacji interfejsu użytkownika do korzystania z funkcji obsługi tekstu w automatyzacji interfejsu użytkownika.
Znajdź interesujące kontrolki. Skrypty testów automatycznych lokalizują elementy automatyzacji interfejsu użytkownika, które reprezentują interesujące kontrolki w drzewie automatyzacji.

Istnieje wiele sposobów uzyskiwania elementów automatyzacji interfejsu użytkownika za pomocą kodu.

— Wykonaj zapytanie dotyczące interfejsu użytkownika przy użyciu instrukcji Condition. Zwykle w tym miejscu używana jest neutralna dla języka AutomationIdProperty. Uwaga: można uzyskać AutomationIdProperty za pomocą narzędzia, takiego jak Inspect.exe, które umożliwia określanie właściwości automatyzacji interfejsu użytkownika kontrolki.

— Użyj klasy TreeWalker, aby przejść przez całe drzewo automatyzacji interfejsu użytkownika lub jego podzbiór.
- Śledzenie fokusu.
Użyj hWnd kontrolki.
— Użyj lokalizacji ekranu, takiej jak lokalizacja kursora myszy.

Zobacz Uzyskiwanie elementów automatyzacji interfejsu użytkownika
Uzyskiwanie schematów sterowania. Wzorce kontrolek uwidaczniają typowe zachowania dla kontrolek podobnych funkcjonalnie.

Po zlokalizowaniu kontrolek, które wymagają testowania, skrypty testów automatycznych uzyskują interesujące wzorce sterowania od tych elementów automatyzacji interfejsu użytkownika. Na przykład wzorzec sterowania InvokePattern dla typowych funkcji przycisków lub wzorzec sterowania WindowPattern dla funkcji okna.

Zobacz Omówienie wzorców kontrolek automatyzacji interfejsu użytkownika.
Automatyzowanie interfejsu użytkownika. Skrypty testów automatycznych mogą teraz kontrolować dowolny interesujący interfejs użytkownika ze struktury interfejsu użytkownika przy użyciu informacji i funkcji udostępnianych przez wzorce kontrolek automatyzacji interfejsu użytkownika.

Istnieje wiele powiązanych narzędzi i technologii, które obsługują testowanie automatyczne za pomocą automatyzacji interfejsu użytkownika.

  • Inspect.exe to graficzna aplikacja interfejsu użytkownika (GUI), która może służyć do zbierania informacji automatyzacji interfejsu użytkownika na potrzeby programowania i debugowania zarówno dostawcy, jak i klienta. Inspect.exe jest dołączony do zestawu Windows SDK.

  • Narzędzie MSAABridge uwidacznia informacje o automatyzacji interfejsu użytkownika klientom z aktywnymi ułatwieniami dostępu. Głównym celem pomostowania automatyzacji interfejsu użytkownika do aktywnych ułatwień dostępu jest umożliwienie istniejącym klientom aktywnych ułatwień dostępu możliwość interakcji z dowolną strukturą, która zaimplementowała automatyzację interfejsu użytkownika.

Bezpieczeństwo

Aby uzyskać informacje o zabezpieczeniach, zobacz Omówienie zabezpieczeń automatyzacji interfejsu użytkownika.

Zobacz też

  • Podstawy automatyzacji interfejsu użytkownika