Verwenden der Benutzeroberflächenautomatisierung für automatisierte Tests
Anmerkung
Diese Dokumentation richtet sich an .NET Framework-Entwickler, die die verwalteten Benutzeroberflächenautomatisierungs-Klassen verwenden möchten, die im System.Windows.Automation-Namespace definiert sind. Die neuesten Informationen zur Benutzeroberflächenautomatisierung finden Sie unter Windows Automation API: Benutzeroberflächenautomatisierung.
In dieser Übersicht wird beschrieben, wie die Microsoft-Benutzeroberflächenautomatisierung als Framework für den programmgesteuerten Zugriff in automatisierten Testszenarien nützlich sein kann.
Die Benutzeroberflächenautomatisierung bietet ein einheitliches Objektmodell, mit dem alle Benutzeroberflächenframeworks komplexe und umfassende Funktionen in zugänglicher und leicht automatisierbarer Weise bereitstellen können.
Die Benutzeroberflächenautomatisierung wurde als Nachfolger von Microsoft Active Accessibility entwickelt. Die aktive Barrierefreiheit ist ein vorhandenes Framework, das eine Lösung für die Barrierefreiheit von Steuerelementen und Anwendungen bietet. Die aktive Barrierefreiheit wurde nicht unter Berücksichtigung der Testautomatisierung entwickelt, obwohl sie sich aufgrund der sehr ähnlichen Anforderungen an Barrierefreiheit und Automatisierung zu dieser Rolle entwickelt hat. Die UI-Automatisierung liefert nicht nur verfeinerte Lösungen für die Barrierefreiheit, sondern ist auch speziell darauf ausgelegt, robuste Funktionen für automatisierte Tests bereitzustellen. Beispielsweise basiert die aktive Barrierefreiheit auf einer einzigen Schnittstelle, um Informationen über die Benutzeroberfläche verfügbar zu machen und die informationen zu sammeln, die von AT-Produkten benötigt werden; Die Benutzeroberflächenautomatisierung trennt die beiden Modelle.
Sowohl ein Anbieter als auch ein Client sind erforderlich, um die Benutzeroberflächenautomatisierung zu implementieren, damit es als automatisiertes Testtool nützlich ist. Benutzeroberflächenautomatisierungsanbieter sind Anwendungen wie Microsoft Word, Excel und andere Drittanbieteranwendungen oder Steuerelemente, die auf dem Microsoft Windows-Betriebssystem basieren. Benutzeroberflächenautomatisierungs-Clients umfassen automatisierte Testskripts und Hilfstechnologieanwendungen.
Anmerkung
Die Absicht dieser Übersicht besteht darin, die neuen und verbesserten automatisierten Testfunktionen der Benutzeroberflächenautomatisierung zu präsentieren. Diese Übersicht dient nicht dazu, Informationen zu Barrierefreiheitsfunktionen bereitzustellen und wird Barrierefreiheit nur dann behandeln, wenn es notwendig ist.
Benutzeroberflächenautomatisierung in einem Anbieter
Damit eine Benutzeroberfläche automatisiert werden kann, muss ein Entwickler einer Anwendung oder eines Steuerelements anhand der standardmäßigen Tastatur- und Mausinteraktion untersuchen, welche Aktionen ein Endbenutzer auf dem UI-Objekt ausführen kann.
Nachdem diese wichtigsten Aktionen identifiziert wurden, sollten die entsprechenden Steuerelementmuster der Benutzeroberflächenautomatisierung (d. h. die Steuerelementmuster, die die Funktionalität und das Verhalten des UI-Elements spiegeln) für das Steuerelement implementiert werden. Beispielsweise umfasst die Benutzerinteraktion mit einem Kombinationsfeld-Steuerelement (z. B. dem Dialogfeld "Ausführen") in der Regel das Erweitern und Reduzieren des Kombinationsfelds, um eine Liste von Elementen auszublenden oder anzuzeigen, ein Element aus dieser Liste auszuwählen oder einen neuen Wert über die Tastatureingabe hinzuzufügen.
Anmerkung
Mit anderen Barrierefreiheitsmodellen müssen Entwickler Informationen direkt aus einzelnen Schaltflächen, Menüs oder anderen Steuerelementen sammeln. Leider kommt jeder Steuerelementtyp in Dutzenden kleiner Variationen. Mit anderen Worten, obwohl zehn Variationen eines Pushbuttons alle auf die gleiche Weise funktionieren und dieselbe Funktion ausführen können, müssen sie alle als eindeutige Steuerelemente behandelt werden. Es gibt keine Möglichkeit zu wissen, dass diese Steuerelemente funktional gleichwertig sind. Steuerelementmuster wurden entwickelt, um diese allgemeinen Steuerelementverhaltensweisen darzustellen. Weitere Informationen finden Sie unter UI Automation Control Patterns Overview.
Implementieren der Benutzeroberflächenautomatisierung
Wie bereits erwähnt, müssen Testtools und Entwickler ohne das einheitliche Modell der Benutzeroberflächenautomatisierung frameworkspezifische Informationen kennen, um Eigenschaften und Verhalten von Steuerelementen in diesem Framework verfügbar zu machen. Da mehrere verschiedene UI-Frameworks wie Win32, Windows Forms und Windows Presentation Foundation (WPF) jederzeit in Windows-Betriebssystemen vorhanden sein können, kann es eine entmutigende Aufgabe sein, mehrere Anwendungen mit scheinbar ähnlichen Steuerelementen zu testen. In der folgenden Tabelle werden beispielsweise die frameworkspezifischen Eigenschaftennamen beschrieben, die zum Abrufen des Namens (oder Texts) erforderlich sind, der einem Schaltflächensteuerelement zugeordnet ist, und zeigt die einzelne entsprechende Benutzeroberflächenautomatisierungs-Eigenschaft an.
Steuerelementtyp der Benutzeroberflächenautomatisierung | Benutzeroberflächen-Framework | Framework-spezifische Eigenschaft | Benutzeroberflächenautomatisierungs-Eigenschaft |
---|---|---|---|
Schaltfläche | Windows Presentation Foundation | Inhalt | NameProperty |
Schaltfläche | Win32 | Überschrift | NameProperty |
Abbildung | HTML | alt | NameProperty |
Benutzeroberflächenautomatisierungs-Anbieter sind dafür verantwortlich, die frameworkspezifischen Eigenschaften ihrer Steuerelemente den entsprechenden Benutzeroberflächenautomatisierungs-Eigenschaften zuzuordnen.
Informationen zur Implementierung der Benutzeroberflächenautomatisierung in einem Anbieter finden Sie unter Benutzeroberflächenautomatisierungsanbieter für verwalteten Code. Informationen zur Implementierung von Steuerelementmustern finden Sie unter Steuerelementmuster für die Benutzeroberflächenautomatisierung und Textmuster für die Benutzeroberflächenautomatisierung.
Benutzeroberflächenautomatisierung in einem Client
Das Ziel vieler automatisierter Testtools und -szenarien ist die konsistente und wiederholbare Manipulation der Benutzeroberfläche. Dies kann Komponententests bestimmter Steuerelemente bis zur Aufzeichnung und Wiedergabe von Testskripten umfassen, die generische Aktionen auf eine Reihe von Steuerelementen anwenden.
Eine Komplikation, die sich aus automatisierten Anwendungen ergibt, ist die Schwierigkeit, einen Test mit einem dynamischen Ziel zu synchronisieren. Beispiel: Ein Listenfeld-Steuerelement, z. B. ein Steuerelement, das im Windows-Task-Manager enthalten ist, in dem eine Liste der derzeit ausgeführten Anwendungen angezeigt wird. Da die Elemente im Listenfeld dynamisch außerhalb des Steuerelements der Testanwendung aktualisiert werden, ist es unmöglich, die Auswahl eines bestimmten Elements im Listenfeld mit einer beliebigen Konsistenz zu wiederholen. Ähnliche Probleme können auch auftreten, wenn Sie versuchen, einfache Fokusänderungen in einer Benutzeroberfläche zu wiederholen, die sich außerhalb der Kontrolle der Testanwendung befindet.
Programmgesteuerter Zugriff
Der programmgesteuerte Zugriff bietet die Möglichkeit, mithilfe von Code jede Interaktion und Erfahrung zu imitieren, die durch herkömmliche Maus- und Tastatureingaben bereitgestellt werden. Die Benutzeroberflächenautomatisierung ermöglicht den programmgesteuerten Zugriff über fünf Komponenten:
Die Benutzeroberflächenautomatisierungs-Struktur erleichtert die Navigation in der Struktur der Benutzeroberfläche. Die Struktur wird aus der hWnd-Auflistung erstellt. Weitere Informationen finden Sie unter UI Automation Tree Übersicht.
Automatisierungselemente sind einzelne Komponenten in der Benutzeroberfläche. Diese sind oft feiner unterteilt als ein hWnd. Weitere Informationen finden Sie unter Übersicht über Steuerelementtypen für die Benutzeroberflächenautomatisierung.
Automatisierungseigenschaften enthalten spezifische Informationen zu UI-Elementen. Weitere Informationen finden Sie unter UI Automation Properties Overview.
Steuerelementmuster definieren einen bestimmten Aspekt der Funktionalität eines Steuerelements; sie können aus Eigenschaften-, Methoden-, Ereignis- und Strukturinformationen bestehen. Weitere Informationen finden Sie unter UI Automation Control Patterns Overview.
Automatisierungsereignisse stellen Ereignisbenachrichtigungen und Informationen bereit. Weitere Informationen finden Sie unter UI Automation Events Overview.
Wichtige Eigenschaften für die Testautomatisierung
Die Möglichkeit, steuerelemente innerhalb der Benutzeroberfläche eindeutig zu identifizieren und anschließend zu finden, bietet die Grundlage für automatisierte Testanwendungen, die auf dieser Benutzeroberfläche ausgeführt werden können. Es gibt mehrere Microsoft-Benutzeroberflächenautomatisierungs-Eigenschaften, die von Clients und Anbietern verwendet werden, die dies unterstützen.
AutomationID
Identifiziert ein Automatisierungselement eindeutig von seinen Geschwisterelementen. AutomationIdProperty ist nicht lokalisiert, im Gegensatz zu einer Eigenschaft wie NameProperty, die in der Regel lokalisiert wird, wenn ein Produkt in mehreren Sprachen ausgeliefert wird. Siehe Use the AutomationID Property.
Anmerkung
AutomationIdProperty garantiert keine eindeutige Identität im gesamten Automatisierungsbaum. Beispielsweise kann eine Anwendung ein Menüsteuerelement mit mehreren Menüelementen auf oberster Ebene enthalten, die wiederum mehrere untergeordnete Menüelemente enthalten. Diese sekundären Menüeinträge können durch ein allgemeines Schema wie "Element1, Element2, Element3 usw." identifiziert werden, wodurch doppelte Bezeichner für die untergeordneten Elemente aller Menüeinträge oberster Ebene möglich sind.
Steuerungstyp
Identifiziert den Steuerelementtyp, der durch ein Automatisierungselement dargestellt wird. Wichtige Informationen können von Kenntnissen des Steuerelementtyps abgeleitet werden. Siehe UI Automation Control Types Overview.
NameProperty
Dies ist eine Textzeichenfolge, die ein Steuerelement identifiziert oder erläutert. NameProperty sollte mit Vorsicht verwendet werden, da sie lokalisiert werden kann. Siehe Übersicht über die Eigenschaften der UI-Automatisierung.
Implementieren der Benutzeroberflächenautomatisierung in einer Testanwendung
Schritt | Beschreibung |
---|---|
Fügen Sie die Benutzeroberflächenautomatisierungsverweise hinzu. | Die für Benutzeroberflächenautomatisierungs-Clients erforderlichen Benutzeroberflächenautomatisierungs-DLL sind hier aufgeführt. - UIAutomationClient.dll bietet Zugriff auf clientseitige BENUTZERoberflächenautomatisierungs-APIs. - UIAutomationClientSideProvider.dll bietet die Möglichkeit, Win32-Steuerelemente zu automatisieren. Siehe UI Automation Support for Standard Controls. - UIAutomationTypes.dll bietet Zugriff auf die spezifischen Typen, die in der Benutzeroberflächenautomatisierung definiert sind. |
Fügen Sie den Namensraum System.Windows.Automation hinzu. | Dieser Namespace enthält alles, was Benutzeroberflächenautomatisierungs-Clients benötigen, um die Funktionen der Benutzeroberflächenautomatisierung außer der Textverarbeitung zu verwenden. |
Fügen Sie den System.Windows.Automation.Text-Namespace hinzu. | Dieser Namespace enthält alles, was Benutzeroberflächenautomatisierungs-Clienten benötigen, um die Funktionen der Textverarbeitung in der Benutzeroberflächenautomatisierung zu verwenden. |
Suchen sie nach Steuerelementen von Interesse. | Automatisierte Testskripts suchen Benutzeroberflächenautomatisierungs-Elemente, die Steuerelemente von Interesse innerhalb der Automatisierungsstruktur darstellen. Es gibt mehrere Möglichkeiten zum Abrufen von Benutzeroberflächenautomatisierungselementen mit Code. - Abfragen der Benutzeroberfläche mithilfe einer Condition-Anweisung. In der Regel wird die sprachneutrale AutomationIdProperty verwendet. Hinweis: Ein AutomationIdProperty kann mit einem Tool wie Inspect.exe abgerufen werden, das die Benutzeroberflächenautomatisierungseigenschaften eines Steuerelements auflisten kann. - Verwenden der TreeWalker-Klasse, um die gesamte Benutzeroberflächenautomatisierungs-Struktur oder einen Teil davon zu durchlaufen - Fokus verfolgen. - Verwenden von hWnd des Steuerelements – Verwenden Sie die Bildschirmposition, z. B. die Position des Mauszeigers. Siehe Obtaining UI Automation Elements. |
Abrufen von Steuerelementmustern | Steuerelementmuster machen allgemeine Verhaltensweisen für funktional ähnliche Steuerelemente verfügbar. Nach dem Auffinden der Steuerelemente, die Tests erfordern, erhalten automatisierte Testskripts die Steuerelementmuster, die für diese Benutzeroberflächenautomatisierungs-Elemente von Interesse sind. Beispielsweise das InvokePattern Steuerelementmuster für typische Schaltflächenfunktionen oder das WindowPattern Steuerelementmuster für Die Fensterfunktionalität. Siehe UI Automation Control Patterns Overview. |
Automatisieren Sie die Benutzeroberfläche. | Automatisierte Testskripts können jetzt jede interessante Benutzeroberfläche aus einem Benutzeroberflächenframework mithilfe der Informationen und Funktionen steuern, die von den Steuerelementmustern der Benutzeroberflächenautomatisierung verfügbar gemacht werden. |
Verwandte Tools und Technologien
Es gibt eine Reihe verwandter Tools und Technologien, die automatisierte Tests mit der Benutzeroberflächenautomatisierung unterstützen.
Inspect.exe ist eine GUI-Anwendung (Grafische Benutzeroberfläche), die zum Sammeln von Benutzeroberflächenautomatisierungsinformationen sowohl für die Anbieter- als auch für die Cliententwicklung und das Debuggen verwendet werden kann. Inspect.exe ist im Windows SDK enthalten.
MSAABridge macht Benutzeroberflächenautomatisierungsinformationen für Aktive Barrierefreiheitsclients verfügbar. Das Hauptziel der Überbrückung der Benutzeroberflächenautomatisierung zu aktiver Barrierefreiheit besteht darin, vorhandenen Active Accessibility-Clients die Möglichkeit zu ermöglichen, mit jedem Framework zu interagieren, das die Benutzeroberflächenautomatisierung implementiert hat.
Sicherheit
Sicherheitsinformationen finden Sie unter Sicherheitsübersicht zur Benutzeroberflächenautomatisierung.