Verwenden von Benutzeroberflächenautomatisierung für automatisierte Tests
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 bereit, das es allen Ui-Frameworks ermöglicht, komplexe und umfangreiche Funktionen auf leicht zugängliche und einfach automatisierte Weise verfügbar zu machen.
Benutzeroberflächenautomatisierung wurde als Nachfolger von Microsoft Active Accessibility entwickelt, einem Framework, das eine Lösung zum Zugänglichmachen von Steuerelementen und Anwendungen bieten soll. Microsoft Active Accessibility wurde nicht unter Berücksichtigung der Testautomatisierung entwickelt, obwohl es sich aufgrund der ähnlichen Anforderungen an Barrierefreiheit und Automatisierung zu dieser Rolle entwickelt hat. Benutzeroberflächenautomatisierung wurde speziell entwickelt, um robuste Funktionen für automatisierte Tests bereitzustellen, und bietet außerdem verfeinerte Lösungen für die Barrierefreiheit. Microsoft Active Accessibility verwendet beispielsweise eine einzige Schnittstelle, um Informationen zur 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 sind erforderlich, um Benutzeroberflächenautomatisierung zu implementieren, damit es 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
- Benutzeroberflächenautomatisierung in Clients
- Haupteigenschaften für die Testautomatisierung
- Verwandte Tools und Technologien
- Zugehörige Themen
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 die Standardmäßige Tastatur- und Mausinteraktion verwendet. Nachdem diese wichtigen Aktionen identifiziert wurden, sollten die Benutzeroberflächenautomatisierung Steuerelementmuster, die die Funktionalität und das Verhalten des UI-Elements Spiegel, für das Steuerelement implementiert werden. Beispielsweise umfasst die Benutzerinteraktion mit einem Kombinationsfeldsteuerelement 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 die 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 von geringfügigen Variationen enthalten. Anders ausgedrückt: Obwohl 10 Variationen einer Drucktaste 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 Kontrollmuster wurden entwickelt, um diese gängigen Steuerungsverhalten darzustellen. Weitere Informationen finden Sie unter UI Automation Control Patterns Overview.
Ohne das von Benutzeroberflächenautomatisierung bereitgestellte einheitliche Modell von Steuerelementmustern müssen Testtools und Entwickler über frameworkspezifische Informationen verfügen, um Eigenschaften und Steuerungsverhalten in diesem Framework verfügbar zu machen. Da in Windows-Betriebssystemen mehrere verschiedene Benutzeroberflächenframeworks gleichzeitig vorhanden sein können, einschließlich Microsoft Win32, Windows Forms und Windows Presentation Foundation (WPF), kann es eine entmutigende Aufgabe sein, mehrere Anwendungen mit ähnlichen Steuerelementen zu testen. In der folgenden Tabelle sind beispielsweise die frameworkspezifischen Eigenschaftennamen aufgeführt, die zum Abrufen des namens oder des Texts erforderlich sind, der einem Schaltflächensteuerelement zugeordnet ist, und die entsprechende Benutzeroberflächenautomatisierung-Eigenschaft.
Steuerelementtyp | Benutzeroberflächenframework | Frameworkspezifische Eigenschaft | Eigenschaft der Benutzeroberflächenautomatisierung |
---|---|---|---|
Schaltfläche | WPF | Inhalt | Name-Eigenschaft |
Taste | Win32 | Caption | Name-Eigenschaft |
Image | HTML | alt | Name-Eigenschaft |
Benutzeroberflächenautomatisierungs-Anbieter sind für die Zuordnung der frameworkspezifischen Eigenschaften ihrer Steuerelemente zu den entsprechenden Benutzeroberflächenautomatisierungs-Eigenschaften zuständig. Informationen zum Implementieren von Benutzeroberflächenautomatisierung in einem Anbieter finden Sie unter Benutzeroberflächenautomatisierung Anbieterprogrammiererhandbuch. Informationen zum Implementieren von Steuerelementmustern finden Sie unter Implementieren von Benutzeroberflächenautomatisierung Steuerelementmustern.
Benutzeroberflächenautomatisierung in Clients
Das Ziel automatisierter Testtools und -szenarien ist die konsistente und wiederholbare Bearbeitung der Benutzeroberfläche. Dies kann z. B. komponentenspezifische Steuerelemente testen und Testskripts aufzeichnen und ausführen, die eine Reihe generischer Aktionen für eine Gruppe von Steuerelementen durchlaufen.
Eine Komplikation bei automatisierten Anwendungen ist die Schwierigkeit, einen Test mit einem dynamischen Ziel zu synchronisieren, z. B. mit einem Listenfeldsteuerelement wie 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 es unmöglich, die Auswahl eines bestimmten Elements im Listenfeld mit einer beliebigen Konsistenz zu wiederholen. Ähnliche Probleme können auftreten, wenn versucht wird, einfache Fokusänderungen auf 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. 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 Sammlung von HWNDserstellt. Weitere Informationen finden Sie unter Benutzeroberflächenautomatisierung Strukturübersicht.
- Automatisierungselemente sind einzelne Komponenten auf der Benutzeroberfläche. Diese können oft präziser sein als ein HWND.
- 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, ein beliebiges Steuerelement auf der Benutzeroberfläche eindeutig zu identifizieren und anschließend zu finden, stellt die Grundlage für automatisierte Testanwendungen dar, 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 jedem instance der Anwendung identisch, unabhängig von der lokalen Sprache. Obwohl die AutomationId-Eigenschaft unter gleichgeordneten Elementen eindeutig ist, ist sie möglicherweise nicht für den gesamten Desktop eindeutig. Beispielsweise können mehrere Instanzen einer Anwendung oder mehrere Ordnersichten 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. AutomationId ist nicht garantiert, dass sie 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. Es sollte mit Vorsicht verwendet werden, da es lokalisiert werden kann. Die Name-Eigenschaft ist kein eindeutiger Bezeichner unter gleichgeordneten Elementen. Für die Testautomatisierung sollten Clients stattdessen die Eigenschaft AutomationId oder RuntimeId verwenden. |
RuntimeId | Ein Array von ganzen Zahlen, die einen Bezeichner für ein Automatisierungselement darstellen. Der Bezeichner ist auf dem Desktop eindeutig, ist aber garantiert nur für die Benutzeroberfläche des Desktops, auf dem er generiert wurde, eindeutig. Bezeichner können im Laufe der Zeit wiederverwendet werden. Verwenden Sie IUIAutomation::CompareElements , um zu ermitteln, ob das Element, das derzeit über eine bestimmte Laufzeit-ID verfügt, dasselbe Element ist, das zuvor diese ID hatte. Außerdem kann sich das Format der RuntimeId-Eigenschaft ändern. Er sollte als undurchsichtiger Wert behandelt und nur zum Vergleich verwendet werden. beispielsweise, um zu bestimmen, ob sich ein Automatisierungselement im Cache befindet. |
Verwandte Tools und Technologien
Inspect (Inspect.exe) ist ein Windows-basiertes Tool, mit dem Sie Benutzeroberflächenautomatisierung Informationen für die Entwicklung und das Debuggen von Anbietern und Clients sammeln können. Inspect ist im Windows Software Development Kit (SDK) enthalten.
Zugehörige Themen