Verwenden von Benutzeroberflächenautomatisierung für automatisierte Tests

In dieser Übersicht wird beschrieben, wie Microsoft Benutzeroberflächenautomatisierung als Framework für den programmgesteuerten Zugriff in automatisierten Testszenarien nützlich sein kann.

Benutzeroberflächenautomatisierung bietet ein einheitliches Objektmodell, mit dem alle Benutzeroberflächenframeworks komplexe und umfangreiche Funktionen auf zugängliche und leicht automatisierte Weise verfügbar machen können.

Benutzeroberflächenautomatisierung wurde als Nachfolger von Microsoft Active Accessibility entwickelt. Dabei handelt es sich um ein Framework, das als Lösung für den Zugriff auf Steuerelemente und Anwendungen konzipiert wurde. Microsoft Active Accessibility wurde nicht unter Berücksichtigung der Testautomatisierung entwickelt, obwohl sie sich aufgrund der ähnlichen Anforderungen an Barrierefreiheit und Automatisierung zu dieser Rolle entwickelt hat. Benutzeroberflächenautomatisierung wurde speziell für die Bereitstellung robuster Funktionen für automatisierte Tests sowie für die Bereitstellung optimierter Lösungen für die Barrierefreiheit entwickelt. beispielsweise basiert Microsoft Active Accessibility auf einer einzigen Schnittstelle, um Informationen über die Benutzeroberfläche verfügbar zu machen und die informationen zu sammeln, die von Hilfstechnologieprodukten benötigt werden. Benutzeroberflächenautomatisierung trennt die beiden Modelle.

Sowohl ein Anbieter als auch ein Client müssen Benutzeroberflächenautomatisierung implementieren, damit er als automatisiertes Testtool nützlich ist. Benutzeroberflächenautomatisierung Anbieter sind Anwendungen wie Microsoft Word, Microsoft Excel und andere Anwendungen oder Steuerelemente von Drittanbietern, die auf dem Windows Betriebssystem basieren. Benutzeroberflächenautomatisierungs-Clients schließen automatisierte Testskripts und Hilfstechnologieanwendungen ein.

Dieses Thema enthält folgende Abschnitte:

Benutzeroberflächenautomatisierung in Anbietern

Um ein Element der Benutzeroberfläche zu automatisieren, muss der Entwickler untersuchen, welche Aktionen ein Endbenutzer für das Benutzeroberflächenobjekt ausführen kann, indem er standardmäßige Tastatur- und Mausinteraktionen verwendet. Nachdem diese wichtigen Aktionen identifiziert wurden, sollten die Benutzeroberflächenautomatisierung Steuerelementmuster, die die Funktionalität und das Verhalten des Benutzeroberflächenelements widerspiegeln, auf dem Steuerelement implementiert werden. Beispielsweise umfasst die Benutzerinteraktion mit einem Kombinationsfeld-Steuerelement in der Regel das Erweitern und Reduzieren des Kombinationsfelds, um eine Liste von Elementen anzuzeigen oder auszublenden, ein Element aus der Liste auszuwählen oder einen neuen Wert über eine Tastatureingabe hinzuzufügen.

Bei anderen Barrierefreiheitsmodellen müssen Entwickler Informationen direkt von einzelnen Schaltflächen, Menüs oder anderen Steuerelementen erfassen. Jeder Steuerelementtyp ist in Dutzenden geringfügiger Variationen erhältlich. Anders ausgedrückt: Obwohl 10 Variationen eines Pushbuttons auf die gleiche Weise funktionieren und dieselbe Funktion ausführen, müssen sie alle als eindeutige Steuerelemente behandelt werden. Es gibt keine Möglichkeit festzustellen, dass diese Steuerelemente über identische Funktionsweisen verfügen. Benutzeroberflächenautomatisierung Steuerelementmuster wurden entwickelt, um diese allgemeinen Steuerungsverhalten darzustellen. Weitere Informationen finden Sie unter UI Automation Control Patterns Overview.

Ohne das einheitliche Modell von Steuerelementmustern, das von Benutzeroberflächenautomatisierung bereitgestellt wird, müssen Testtools und Entwickler über frameworkspezifische Informationen verfügen, um Eigenschaften und Steuerelementverhalten in diesem Framework verfügbar zu machen. Da mehrere verschiedene Benutzeroberflächenframeworks gleichzeitig in Windows Betriebssystemen vorhanden sein können, einschließlich Microsoft Win32, Windows Forms und Windows Presentation Foundation (WPF), kann es eine schwierige Aufgabe sein, mehrere Anwendungen mit Steuerelementen zu testen, die ähnlich erscheinen. In der folgenden Tabelle werden beispielsweise die frameworkspezifischen Eigenschaftennamen aufgelistet, die zum Abrufen des Namens oder Texts erforderlich sind, der einem Schaltflächensteuerelement zugeordnet ist, und die entsprechende Benutzeroberflächenautomatisierung-Eigenschaft angezeigt.

Steuerelementtyp Benutzeroberflächenframework Frameworkspezifische Eigenschaft Benutzeroberflächenautomatisierung-Eigenschaft
Schaltfläche WPF Inhalt Name-Eigenschaft
Schaltfläche Win32 Caption Name-Eigenschaft
Image HTML alt Name-Eigenschaft

Benutzeroberflächenautomatisierung Anbieter sind dafür verantwortlich, die frameworkspezifischen Eigenschaften ihrer Steuerelemente den entsprechenden Benutzeroberflächenautomatisierung Eigenschaften zuzuordnen. Informationen zum Implementieren von Benutzeroberflächenautomatisierung in einem Anbieter finden Sie im Benutzeroberflächenautomatisierung Anbieterprogrammiererhandbuch. Informationen zum Implementieren von Steuerelementmustern finden Sie unter Implementing Benutzeroberflächenautomatisierung Control Patterns.

Benutzeroberflächenautomatisierung in Clients

Das Ziel automatisierter Testtools und -szenarien ist die konsistente und wiederholbare Bearbeitung der Benutzeroberfläche. Dies kann beispielsweise Komponententests für bestimmte Steuerelemente sowie das Aufzeichnen und Ausführen von Testskripts umfassen, die eine Reihe generischer Aktionen für eine Gruppe von Steuerelementen durchlaufen.

Eine Schwierigkeit bei automatisierten Anwendungen ist die Synchronisierung eines Tests mit einem dynamischen Ziel, z. B. ein Listenfeld-Steuerelement, z. B. Windows Task-Manager, das eine Liste der derzeit ausgeführten Anwendungen anzeigt. Da die Elemente im Listenfeld dynamisch außerhalb der Kontrolle der Testanwendung aktualisiert werden, ist ein Versuch, die Auswahl eines bestimmten Elements im Listenfeld mit beliebiger Konsistenz zu wiederholen, nicht möglich. Ähnliche Probleme können auftreten, wenn versucht wird, einfache Fokusänderungen in einer Benutzeroberfläche zu wiederholen, die sich außerhalb der Kontrolle der Testanwendung befindet.

Programmgesteuerter Zugriff

Mit programmgesteuertem Zugriff können mithilfe von Code alle durch normale Maus- und Tastatureingaben ausführbaren Interaktionen und Verhaltensweisen imitiert werden. Benutzeroberflächenautomatisierung ermöglicht den programmgesteuerten Zugriff über fünf Komponenten:

  • Die Benutzeroberflächenautomatisierung-Struktur erleichtert die Navigation durch die Struktur der Benutzeroberfläche. Die Struktur wird aus der Auflistung von HWND-S erstellt. Weitere Informationen finden Sie unter Benutzeroberflächenautomatisierung Tree Overview.
  • Automatisierungselemente sind einzelne Komponenten in der Benutzeroberfläche. Diese können häufig präziser als ein HWND sein.
  • Automatisierungseigenschaften stellen spezifische 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, ein Steuerelement in der Benutzeroberfläche eindeutig zu identifizieren und anschließend zu finden, bildet die Grundlage für automatisierte Testanwendungen, die auf dieser Benutzeroberfläche ausgeführt werden können. Benutzeroberflächenautomatisierung Eigenschaften, die von Clients und Anbietern zum Identifizieren und Suchen von Steuerelementen verwendet werden, werden in der folgenden Tabelle beschrieben.

Eigenschaft BESCHREIBUNG
AutomationID Unterscheidet ein Automatisierungselement eindeutig von seinen gleichgeordneten Elementen. Unterstützung für die AutomationId-Eigenschaft ist nicht erforderlich. Wenn sie verfügbar ist, ist die AutomationId-Eigenschaft eines Elements in jeder Instanz der Anwendung unabhängig von der lokalen Sprache identisch. Obwohl die AutomationId-Eigenschaft für gleichgeordnete Elemente eindeutig ist, ist sie möglicherweise nicht auf dem gesamten Desktop eindeutig. Beispielsweise können mehrere Instanzen einer Anwendung oder mehrere Ordneransichten in Microsoft Windows Explorer Elemente mit derselben AutomationIdProperty enthalten, z. B. "SystemMenuBar". Clients sollten keine Annahmen hinsichtlich der AutomationIds treffen, die von anderen Anwendungen verfügbar gemacht werden. Es ist nicht garantiert, dass AutomationId in verschiedenen Releases oder Builds einer Anwendung stabil ist.
ControlType Identifiziert den Steuerelementtyp, der durch ein Automatisierungselement dargestellt wird. Durch Kenntnis des Steuerelementtyps können wichtige Informationen abgeleitet werden. Weitere Informationen finden Sie unter UI Automation Control Types Overview.
Name Eine Textzeichenfolge, die den Zweck eines Automatisierungselements identifiziert oder erläutert. Sie sollte mit Vorsicht verwendet werden, da sie lokalisiert werden kann. Die Name-Eigenschaft ist kein eindeutiger Bezeichner für gleichgeordnete Elemente. Für die Testautomatisierung sollten Clients stattdessen die AutomationId-Eigenschaft oder die RuntimeId-Eigenschaft verwenden.
RuntimeId Ein Array von ganzen Zahlen, die einen Bezeichner für ein Automatisierungselement darstellen. Der Bezeichner ist auf dem Desktop eindeutig, ist jedoch garantiert nur für die Benutzeroberfläche des Desktops eindeutig, auf dem er generiert wurde. Bezeichner können im Laufe der Zeit wiederverwendet werden. Verwenden Sie IUIAutomation::CompareElements, um zu bestimmen, ob das Element, das derzeit über eine bestimmte Laufzeit-ID verfügt, mit dem Element identisch ist, das zuvor diese ID hatte. Außerdem kann sich das Format der RuntimeId-Eigenschaft ändern. Er sollte als nicht transparenter Wert behandelt und nur für Vergleiche verwendet werden. Beispielsweise, um zu bestimmen, ob sich ein Automatisierungselement im Cache befindet.

Inspect (Inspect.exe) ist ein Windows-basiertes Tool, mit dem Sie Benutzeroberflächenautomatisierung Informationen für die Anbieter- und Cliententwicklung und das Debuggen sammeln können. Inspect ist im Windows Software Development Kit (SDK) enthalten.

Sicherheitsüberlegungen zu Benutzeroberflächenautomatisierung