Verwenden von Benutzeroberflächenautomatisierung für automatisierte Tests
Hinweis
Diese Dokumentation ist für .NET Framework-Entwickler konzipiert, die die verwalteten Klassen zur Automatisierung der Benutzeroberfläche verwenden möchten, die im Namespace System.Windows.Automation definiert sind. Aktuelle Informationen zur Automatisierung der Benutzeroberfläche finden Sie auf der Seite zur Windows-Automatisierungs-API: Benutzeroberflächenautomatisierung.
In dieser Übersicht wird erläutert, wie die Benutzeroberflächenautomatisierung von Microsoft als nützliches Framework für den programmgesteuerten Zugriff in Szenarien mit automatisierten Tests verwendet werden kann.
Benutzeroberflächenautomatisierung stellt ein einheitliches Objektmodell zur Verfügung, das es allen Benutzeroberflächenframeworks ermöglicht, komplexe und umfangreiche Funktionalität einfach und leicht automatisierbar bereitzustellen.
Benutzeroberflächenautomatisierung wurde als Nachfolger von Microsoft Active Accessibility entwickelt. Active Accessibility ist ein vorhandenes Framework, das zum Bereitstellen einer Lösung für den Zugriff auf Steuerelemente und Anwendungen entwickelt wurde. Active Accessibility wurde nicht im Hinblick auf Testautomatisierung entwickelt, obwohl es diese Rolle aufgrund der sehr ähnlichen Anforderungen hinsichtlich Barrierefreiheit und Automatisierung übernommen hat. Neben der Bereitstellung von verbesserten Barrierefreiheitslösungen wurde Benutzeroberflächenautomatisierung insbesondere für stabile Funktionalität bei automatisierten Tests entwickelt. Beispielsweise wird in Active Accessibility eine einzelne Schnittstelle zum Bereitstellen von Benutzeroberflächeninformationen und zum Erfassen der erforderlichen Informationen für AT-Produkte verwendet. Bei der Benutzeroberflächenautomatisierung sind die beiden Modelle getrennt.
Sowohl ein Anbieter als auch ein Client müssen Benutzeroberflächenautomatisierung implementieren, damit es als Tool für automatisierte Tests eingesetzt werden kann. Benutzeroberflächenautomatisierungs-Anbieter sind Anwendungen, wie zum Beispiel Microsoft Word, Excel und andere Anwendungen oder Steuerelemente von Drittanbietern, die auf dem Microsoft Windows-Betriebssystem basieren. Benutzeroberflächenautomatisierungs-Clients schließen automatisierte Testskripts und Hilfstechnologieanwendungen ein.
Hinweis
In dieser Übersicht sollen die neuen und verbesserten Funktionen für automatisierte Tests der Benutzeroberflächenautomatisierung hervorgehoben werden. Diese Übersicht ist nicht zur Bereitstellung von Informationen über Barrierefreiheitsfeatures vorgesehen. Barrierefreiheitsfeatures werden nur wenn nötig erläutert.
Benutzeroberflächenautomatisierung in einem Anbieter
Zum Automatisieren einer Benutzeroberfläche muss der Entwickler bzw. die Entwicklerin einer Anwendung oder eines Steuerelements ermitteln, welche Aktionen der Endbenutzer bzw. die Endbenutzerin mit standardmäßiger Tastatur- und Mausinteraktion für das Benutzeroberflächenobjekt ausführen kann.
Nachdem diese wichtigen Aktionen ermittelt wurden, müssen entsprechende Benutzeroberflächenautomatisierungs-Steuerelementmuster (d. h. die Steuerelementmuster, die Funktionalität und Verhalten des Benutzeroberflächenelements widerspiegeln) im Steuerelement implementiert werden. Beispielsweise beinhaltet die Interaktion mit einem Kombinationsfeld-Steuerelement (z. B. das Dialogfeld "Ausführen") in der Regel das Erweitern und Reduzieren, um eine Liste von Elementen ein- oder auszublenden, das Auswählen eines Elements aus dieser Liste oder das Hinzufügen eines neuen Werts per Tastatureingabe.
Hinweis
Bei anderen Barrierefreiheitsmodellen müssen Entwickler Informationen direkt von einzelnen Schaltflächen, Menüs oder anderen Steuerelementen erfassen. Leider weist jeder Steuerelementtyp viele Varianten mit kleinen Unterschieden auf. Anders ausgedrückt müssen zehn Varianten eines PushButtons, obwohl sie möglicherweise genau gleich funktionieren und den gleichen Zweck erfüllen, alle als eigene Steuerelemente behandelt werden. Es gibt keine Möglichkeit festzustellen, dass diese Steuerelemente über identische Funktionsweisen verfügen. Steuerelementmuster wurden entwickelt, um diese allgemeinen Steuerelementverhaltensweisen darzustellen. Weitere Informationen finden Sie unter UI Automation Control Patterns Overview.
Implementieren von Benutzeroberflächenautomatisierung
Wie bereits erwähnt benötigen Testtools und Entwickler*innen ohne das von der Benutzeroberflächenautomatisierung bereitgestellte vereinheitlichte Modell frameworkspezifische Informationen, um Eigenschaften und Verhaltensweisen von Steuerelementen in diesem Framework verfügbar zu machen. Da in Windows-Betriebssystemen verschiedene Benutzeroberflächen-Frameworks zum gleichen Zeitpunkt vorhanden sein können, einschließlich Win32, Windows Forms und WPF (Windows Presentation Foundation), kann das Testen mehrerer Anwendungen mit ähnlich scheinenden Steuerelementen eine schwierige Aufgabe sein. In der folgenden Tabelle werden beispielsweise frameworkspezifische Eigenschaftennamen, die zum Abrufen des einem Schaltflächen-Steuerelement zugeordneten Namens (oder Texts) erforderlich sind, und die einzelne entsprechende Benutzeroberflächenautomatisierungs-Eigenschaft aufgeführt.
Steuerelementtyp der Benutzeroberflächenautomatisierung | Benutzeroberflächen-Framework | Framework-spezifische Eigenschaft | Benutzeroberflächenautomatisierungs-Eigenschaft |
---|---|---|---|
Taste | Windows Presentation Foundation | Inhalt | NameProperty |
Taste | Win32 | Caption | NameProperty |
Image | HTML | alt | NameProperty |
Benutzeroberflächenautomatisierungs-Anbieter sind für die Zuordnung der frameworkspezifischen Eigenschaften ihrer Steuerelemente zu den entsprechenden Benutzeroberflächenautomatisierungs-Eigenschaften zuständig.
Informationen zum Implementieren der Benutzeroberflächenautomatisierung in einem Anbieter finden Sie unter Benutzeroberflächenautomatisierungs-Anbieter für verwalteten Code. Informationen zum Implementieren von Steuerelementmustern finden Sie unter UI Automation Control Patterns und UI Automation Text Pattern.
Benutzeroberflächenautomatisierung in einem Client
Das Ziel vieler automatisierter Testtools und entsprechender Szenarien ist die konsistente und wiederholbare Bearbeitung der Benutzeroberfläche. Dies kann Komponententests bestimmter Steuerelemente bis hin zum Aufzeichnen und Anwenden von Testskripts umfassen, durch die eine Iteration einer Reihe allgemeiner Aktionen auf einer Steuerelementgruppe ausgeführt wird.
Eine sich aus automatisierten Anwendungen ergebende Schwierigkeit ist das Synchronisieren eines Tests mit einem dynamischen Ziel. Ein Beispiel hierfür ist ein Listenfeld-Steuerelement, z. B. das im Windows Task-Manager angezeigte Feld mit der Liste der derzeit ausgeführten Anwendungen. Da die Einträge im Listenfeld unabhängig von der Steuerung durch die Testanwendung dynamisch aktualisiert werden, ist es nicht möglich, die Auswahl eines bestimmten Eintrags konsistent zu wiederholen. Ähnliche Probleme können auch beim Wiederholen einfacher Fokusänderungen auf einer Benutzeroberfläche auftreten, die nicht der Steuerung durch die Testanwendung unterliegt.
Programmgesteuerter Zugriff
Mit programmgesteuertem Zugriff können mithilfe von Code alle durch normale Maus- und Tastatureingaben ausführbaren Interaktionen und Verhaltensweisen imitiert werden. Die Benutzeroberflächenautomatisierung ermöglich programmgesteuerten Zugriff mit 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 Overview
Automatisierungselemente sind einzelne Komponenten auf der Benutzeroberfläche. Diese sind oft feiner unterteilt als ein hWnd. Weitere Informationen finden Sie unter UI Automation Control Types Overview.
Automatisierungseigenschaften stellen bestimmte Informationen zu Benutzeroberflächenelementen bereit. Weitere Informationen finden Sie unter UI Automation Properties Overview.
Mit Steuerelementmustern wird ein bestimmter Aspekt der Funktionalität eines Steuerelements definiert. Sie können aus Informationen zu Eigenschaften, Methoden, Ereignissen und Struktur 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.
Haupteigenschaften für die Testautomatisierung
Die Möglichkeit, jedes Steuerelement auf der Benutzeroberfläche eindeutig zu identifizieren und anschließend zu finden, stellt die Grundlage für das Ausführen von Anwendungen für automatisierte Tests auf der Benutzeroberfläche dar. Hierfür gibt es mehrere hilfreiche Microsoft-Eigenschaften für die Benutzeroberflächenautomatisierung, die von Clients und Anbietern verwendet werden.
AutomationID
Unterscheidet ein Automatisierungselement von den nebengeordneten Elementen. AutomationIdProperty ist nicht lokalisiert, im Gegensatz zu Eigenschaften wie NameProperty , die in der Regel lokalisiert werden, wenn ein Produkt in mehreren Sprachen ausgeliefert wird. Siehe Use the AutomationID Property.
Hinweis
DurchAutomationIdProperty wird keine eindeutige Identität in der gesamten Automatisierungsstruktur sichergestellt. Eine Anwendung kann beispielsweise ein Menüsteuerelement mit mehreren Menüeinträgen oberster Ebene enthalten, die wiederum mehrere untergeordnete Menüeinträge aufweisen. 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.
ControlType
Identifiziert den Steuerelementtyp, der durch ein Automatisierungselement dargestellt wird. Durch Kenntnis des Steuerelementtyps können wichtige Informationen 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 möglicherweise eine Lokalisierung vorliegt. Siehe UI Automation Properties Overview.
Implementieren von Benutzeroberflächenautomatisierung in einer Testanwendung
Schritt | BESCHREIBUNG |
---|---|
Fügen Sie die Benutzeroberflächenautomatisierungs-Verweise hinzu. | Die erforderlichen Benutzeroberflächenautomatisierungs-DLLs für Benutzeroberflächenautomatisierungs-Clients sind hier aufgeführt. - UIAutomationClient.dll stellt den Zugriff auf die clientseitigen APIs der Benutzeroberflächenautomatisierung zur Verfügung. - UIAutomationClientSideProvider.dll stellt die Option zum Automatisieren von Win32-Steuerelementen zur Verfügung. Siehe UI Automation Support for Standard Controls. - UIAutomationTypes.dll stellt den Zugriff auf bestimmte, in der Benutzeroberflächenautomatisierung definierte Typen zu Verfügung. |
Fügen Sie den System.Windows.Automation -Namespace hinzu. | Dieser Namespace enthält alle Komponenten, die Benutzeroberflächenautomatisierungs-Clients zum Verwenden der Funktionen der Benutzeroberflächenautomatisierung benötigen, mit Ausnahme von Textbehandlung. |
Fügen Sie den System.Windows.Automation.Text -Namespace hinzu. | Dieser Namespace enthält alle Komponenten, die Benutzeroberflächenautomatisierungs-Clients zum Verwenden der Funktionen für die Textbehandlung der Benutzeroberflächenautomatisierung benötigen. |
Suchen relevanter Steuerelemente | Automatisierte Testskripts suchen Benutzeroberflächenautomatisierungs-Clients, die relevante Steuerelemente in der Automatisierungsstruktur darstellen. Es gibt mehrere Möglichkeiten, Benutzeroberflächenautomatisierungs-Elemente mit Code zu erhalten. - Abfragen der Benutzeroberfläche mithilfe einer Condition-Anweisung. Dies wird in der Regel bei sprachneutraler AutomationIdProperty verwendet. Hinweis:AutomationIdProperty kann mit Tools wie „Inspect.exe“ abgerufen werden. Diese Tools können die Eigenschaften der Benutzeroberflächenautomatisierung eines Steuerelements aufgliedern. - Verwenden der TreeWalker-Klasse, um die gesamte Benutzeroberflächenautomatisierungs-Struktur oder einen Teil davon zu durchlaufen - Nachverfolgen des Fokus - Verwenden von hWnd des Steuerelements - Verwenden der Bildschirmposition, z. B. die Position des Mauszeigers Siehe Obtaining UI Automation Elements. |
Abrufen von Steuerelementmustern | Steuerelementmuster machen allgemeine Verhalten für Steuerelemente mit ähnlichen Funktionen verfügbar. Wenn die zu testenden Steuerelemente gefunden wurden, können mit automatisierten Testskripts die relevanten Steuerelementmuster dieser Benutzeroberflächenautomatisierungs-Elemente abgerufen werden. Zum Beispiel das InvokePattern -Steuerelementmuster für typische Schaltflächenfunktionalität oder das WindowPattern -Steuerelementmuster für Fensterfunktionalität. Siehe UI Automation Control Patterns Overview. |
Automatisieren der Benutzeroberfläche | Automatisierte Testskripts können nun die relevante Benutzeroberfläche eines Benutzeroberflächenframeworks steuern. Hierfür werden die von den Steuerelementmustern der Benutzeroberflächenautomatisierung verfügbar gemachten Informationen und Funktionen verwendet. |
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, die zum Sammeln von Benutzeroberflächenautomatisierungs-Informationen für Entwicklung und Debuggen von Anbietern und Clients verwendet werden kann. „Inspect.exe“ ist im Windows SDK enthalten.
MSAABridge macht Benutzeroberflächenautomatisierungs-Informationen für Active Accessibility-Clients verfügbar. Das Hauptziel beim Bridging für Benutzeroberflächenautomatisierung und Active Accessibility besteht darin, vorhandenen Active Accessibility-Clients die Möglichkeit zu bieten, mit jedem Framework zu interagieren, das die Benutzeroberflächenautomatisierung implementiert hat.
Sicherheit
Sicherheitsinformationen finden Sie unter UI Automation Security Overview.