Share via


Verwenden von Benutzeroberflächenautomatisierung für automatisierte Tests

HinweisHinweis

Diese Dokumentation ist für .NET Framework-Entwickler vorgesehen, die die verwalteten UI Automation-Klassen verwenden möchten, die im System.Windows.Automation-Namespace definiert sind.Aktuelle Informationen zu UI Automation finden Sie unter Windows Automation API: UI Automation.

In dieser Übersicht wird erläutert, wie Microsoft UI Automation als nützliches Framework für den programmgesteuerten Zugriff in Szenarien mit automatisierten Tests verwendet werden kann.

UI Automation stellt ein einheitliches Objektmodell zur Verfügung, das allen user interface (UI)-Frameworks ermöglicht, komplexe, umfangreiche Funktionalität einfach und leicht automatisierbar bereitzustellen.

UI Automation 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 Zugriff und Automatisierung übernommen hat. Neben der Bereitstellung von verbesserten Zugriffslösungen wurde UI Automation 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. In UI Automation sind die beiden Modelle getrennt.

Sowohl ein Anbieter als auch ein Client müssen UI Automation implementieren, damit es als automatisiertes Testtool eingesetzt werden kann. Benutzeroberflächenautomatisierungsanbieter sind Anwendungen, wie zum Beispiel Microsoft Word, Excel und andere Anwendungen oder Steuerelemente von Drittanbietern, die auf dem Microsoft Windows-Betriebssystem basieren. Benutzeroberflächenautomatisierungsclients schließen automatisierte Testskripts und Hilfstechnologieanwendungen ein.

HinweisHinweis

In dieser Übersicht sollen die neuen und verbesserten Testfunktionen von UI Automation hervorgehoben werden.Diese Übersicht ist nicht zur Bereitstellung von Informationen über Barrierefreiheitsfeatures vorgesehen. Barrierefreiheitsfeatures werden nur wenn nötig erläutert.

Dieses Thema enthält folgende Abschnitte.

  • Benutzeroberflächenautomatisierung in einem Anbieter
  • Benutzeroberflächenautomatisierung in einem Client
  • Verwandte Tools und Technologien
  • Sicherheit
  • Verwandte Abschnitte

Benutzeroberflächenautomatisierung in einem Anbieter

Zum Automatisieren von UI muss der Entwickler einer Anwendung bzw. eines Steuerelements ermitteln, welche Aktionen der Endbenutzer mit standardmäßiger Tastatur- und Mausinteraktion für das UI-Objekt ausführen kann.

Nachdem diese wichtigen Aktionen ermittelt wurden, sollten entsprechende UI Automation Steuerelementmuster (das heißt, die Steuerelementmuster, die Funktionalität und Verhalten des UI-Elements wiederspiegeln) 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.

HinweisHinweis

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 Übersicht über Steuerelementmuster für Benutzeroberflächenautomatisierung.

Implementieren von Benutzeroberflächenautomatisierung

Wie bereits erwähnt benötigen Testtools und Entwickler ohne das vereinheitlichte, von UI Automation zur Verfügung gestellte Modell Framework-spezifische Informationen, um Eigenschaften und Verhalten 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 Windows Presentation Foundation (WPF), kann das Testen mehrerer Anwendungen mit ähnlich scheinenden Steuerelementen eine schwierige Aufgabe sein. In der folgenden Tabelle werden beispielsweise Framework-spezifische Eigenschaftennamen, die zum Abrufen des einem Schaltflächen-Steuerelement zugeordneten Namens (oder Texts) erforderlich sind, und die entsprechende einzelne, gleichwertige UI Automation-Eigenschaft aufgeführt.

Steuerelementtyp der Benutzeroberflächenautomatisierung

Benutzeroberflächen-Framework

Framework-spezifische Eigenschaft

Benutzeroberflächenautomatisierungs-Eigenschaft

Button

Windows Presentation Foundation

Inhalt

NameProperty

Button

Win32

Beschriftung

NameProperty

Bild

HTML

alt

NameProperty

Benutzeroberflächenautomatisierungsanbieter sind für die Zuordnung der Framework-spezifischen Eigenschaften ihrer Steuerelemente zu den entsprechenden UI Automation-Eigenschaften zuständig.

Informationen über die Implementierung von UI Automation in einem Anbieter sind unter Benutzeroberflächenautomatisierungs-Anbieter für verwalteten Code zu finden. Informationen zum Implementieren von Steuerelementmustern finden Sie unter Steuerelementmuster für Benutzeroberflächenautomatisierung und Textmuster zur Benutzeroberflächenautomatisierung.

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 in UI auftreten, das 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. UI Automation ermöglich programmgesteuerten Zugriff mit fünf Komponenten:

Haupteigenschaften für die Testautomatisierung

Die Möglichkeit, jedes Steuerelement in UI eindeutig zu identifizieren und anschließend zu finden, stellt die Grundlage für das Ausführen automatisierter Testanwendungen auf UI dar. Es gibt hierfür mehrere hilfreiche Microsoft UI Automation-Eigenschaften, die von untestützenden 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 Verwenden der AutomationID-Eigenschaft.

HinweisHinweis

Durch AutomationIdProperty 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 Übersicht über Steuerelementtypen für Benutzeroberflächenautomatisierung.

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 Übersicht über die Benutzeroberflächenautomatisierungs-Eigenschaften.

Implementieren von Benutzeroberflächenautomatisierung in einer Testanwendung

Fügen Sie die Benutzeroberflächenautomatisierungs-Verweise hinzu.

Die erforderlichen UI Automation-DLLs für Benutzeroberflächenautomatisierungsclients werden hier aufgeführt.

  • UIAutomationClient.dll stellt den Zugriff auf die clientseitigen APIs von UI Automation zur Verfügung.

  • UIAutomationClientSideProvider.dll stellt die Möglichkeit zum Automatisieren von Win32-Steuerelementen zur Verfügung. Siehe Benutzeroberflächenautomatisierungs-Unterstützung für Standardsteuerelemente.

  • UIAutomationTypes.dll stellt den Zugriff auf bestimmte, in UI Automation definierte Typen zu Verfügung.

Fügen Sie den System.Windows.Automation-Namespace hinzu.

Dieser Namespace enthält alle Komponenten, die Benutzeroberflächenautomatisierungsclients zum Verwenden der Funktionen von UI Automation benötigen, mit Ausnahme von Textbehandlung.

Fügen Sie den System.Windows.Automation.Text-Namespace hinzu.

Dieser Namespace enthält alle Komponenten, die Benutzeroberflächenautomatisierungsclients zum Verwenden der Funktionen der UI Automation-Textbehandlung benötigen.

Suchen relevanter Steuerelemente

Automatisierte Testskripts suchen Benutzeroberflächenautomatisierungsclients, die relevante Steuerelemente in der Automatisierungsstruktur darstellen.

Es gibt mehrere Möglichkeiten, Benutzeroberflächenautomatisierungs-Elemente mit Code zu erhalten.

HinweisHinweis
Eine AutomationIdProperty kann mit Tools wie UISpy.exe (UI Spy) abgerufen werden. Diese Tools können die UI Automation-Eigenschaften eines Steuerelements aufgliedern.
  • Verwenden Sie die TreeWalker-Klasse, um die gesamte UI Automation -Struktur oder eine Teilmenge davon zu durchlaufen.

  • Verfolgen Sie den Fokus.

  • Verwenden Sie das hWnd des Steuerelements.

  • Verwenden Sie die Bildschirmposition, z. B. die Position des Mauszeigers.

Siehe Abrufen von Benutzeroberflächenautomatisierungs-Elementen.

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ächenautomatisierungselemente abgerufen werden. Zum Beispiel das InvokePattern-Steuerelementmuster für typische Schaltflächenfunktionalität oder das WindowPattern-Steuerelementmuster für Fensterfunktionalität.

Siehe Übersicht über Steuerelementmuster für Benutzeroberflächenautomatisierung.

Automatisieren der Benutzeroberfläche

Automatisierte Testskripts können nun alle relevanten UI von einem UI-Framework steuern. Hierfür werden die von den UI Automation Steuerelementmustern verfügbar gemachten Informationen und Funktionen verwendet.

Verwandte Tools und Technologien

Es gibt eine Reihe verwandter Tools und Technologien, die automatisierte Tests mit UI Automation unterstützen.

  • UISpy.exe (UI Spy) ist eine graphical user interface (GUI)-Anwendung, die zum Sammeln von UI Automation-Informationen für Entwicklung und Debuggen sowohl von Anbietern als auch von Clients verwendet werden kann. UI Spy ist in Windows Software Development Kit (SDK) enthalten.

  • UIAutoCmd ist ein Befehlszeilentool mit ähnlichen Funktionen wie UI Spy.

  • MSAABridge macht UI Automation-Informationen für Active Accessibility-Clients verfügbar. Das Hauptziel der Überbrückung zwischen UI Automation und Active Accessibility ist, vorhandenen Active Accessibility-Clients die Interaktion mit Frameworks zu ermöglichen, in denen UI Automation implementiert ist.

Sicherheit

Sicherheitsinformationen finden Sie unter Übersicht über die Benutzeroberflächenautomatisierungs-Sicherheit.

Siehe auch

Weitere Ressourcen

Grundlagen der Benutzeroberflächenautomatisierung