WinAppDriver-Alternativen für Apps ohne Barrierefreiheitsbaum

Eine WinAppDriver-Alternative gesucht?So funktioniert Windows-Desktop-Testautomatisierung, und so testen Sie Apps ohne Barrierefreiheitsbaum am Aussehen, ohne Code.

11 Min. LesezeitVom Team von GUI Test Studio

Wenn das Testtool Ihre App nicht sehen kann

Sie richten Inspect auf die Schaltfläche „Speichern“ Ihrer Anwendung, und es zeigt einen einzigen leeren Bereich.Ihr Locator findet nichts, der WinAppDriver-Test schlägt fehl, und die Suche nach einer WinAppDriver-Alternative beginnt.

Das Tool ist selten das Problem.Fast jedes Desktop-Testtool fragt den Barrierefreiheitsbaum der Anwendung, wo die Schaltfläche ist, und manche Anwendungen haben keinen.

Dieser Leitfaden erklärt, wie Desktop-Testautomatisierung unter Windows funktioniert, welche Anwendungen sie nicht sehen kann und wie Sie eine solche Windows-Desktopanwendung trotzdem testen: indem Sie jedes Element am Aussehen finden, so wie ein Mensch.

Wie funktioniert Desktop-Testautomatisierung unter Windows?

Desktop-Testautomatisierung ist Software, die eine Anwendung über ihre Oberfläche bedient, so wie es jemand beim Testen tun würde, und prüft, was sie anzeigt.Unter Windows läuft fast alles davon über Microsoft UI Automation, das Barrierefreiheits-Framework, das auch Screenreader mit Informationen versorgt.

Jede Anwendung beschreibt Windows ihre Oberfläche als Baum.Das Fenster enthält Bereiche, und die Bereiche enthalten Schaltflächen, Felder und Listen, jeweils mit einem Namen, einem Typ und einer Position auf dem Bildschirm.Microsoft Active Accessibility, kurz MSAA, ist die ältere Technologie, die dasselbe für ältere Programme leistet.

Den Baum lesen

Die App beschreibt ihr Fenster

Per Locator finden

Eine AutomationId, ein Name, ein XPath

Handeln

Klicken, tippen, auswählen

Prüfen

Einen Wert aus dem Baum zurücklesen

Ein Testtool liest diesen Baum, findet ein Element mit einem Locator wie seiner AutomationId, seinem Namen oder einem XPath durch den Baum, klickt es dann an, tippt etwas hinein oder liest seinen Wert.

Das funktioniert gut, wenn der Baum vollständig ist.Microsoft liefert die Beschreibung jedes Standard-Steuerelements von Win32, Windows Forms (WinForms) und WPF mit, sodass diese von selbst im Baum erscheinen.Bei einem benutzerdefinierten Steuerelement ist das anders: Sein Entwicklungsteam muss diese Beschreibung schreiben, und ohne sie ist das Steuerelement laut der Dokumentation von Microsoft für UI Automation weitgehend undurchsichtig, das kaum mehr als seine Position melden kann.

WinAppDriver und seine Alternativen lesen denselben Baum

WinAppDriver, der Windows Application Driver von Microsoft, brachte Automatisierung im Stil von Selenium zu UWP-, Windows-Forms-, WPF- und klassischen Win32-Apps.Seine letzte stabile Version auf GitHub, Version 1.2.1, stammt vom November 2020, gefolgt von einem Release Candidate der Version 1.3 im Juli 2021.Der darauf aufbauende Windows-Treiber von Appium ist inzwischen als veraltet markiert, und seine Dokumentation nennt den Treiber Appium WinCore als offiziellen Ersatz.

Die üblichen Alternativen nehmen jeweils einen anderen Weg zum selben Baum:

  • Appium WinCore und NovaWindows sind Appium-Treiber, die mit den Elementen von UI Automation arbeiten, aus einem Test heraus, der in einer beliebigen von Appium unterstützten Sprache geschrieben ist.
  • FlaUI ist eine Open-Source-Bibliothek für .NET, die die UI-Automation-Bibliotheken von Microsoft für in C# geschriebene Tests kapselt.
  • pywinauto ist eine Open-Source-Bibliothek für Python mit zwei Backends: der Win32-API und UI Automation.
  • Coded UI, das eigene UI-Test-Framework von Visual Studio, ist veraltet: Visual Studio 2019 ist die letzte Version, die damit Tests erstellt.
  • TestComplete und Ranorex sind kommerzielle Tools, die Steuerelemente über ihre Eigenschaften identifizieren, und beide bieten bildbasierte Automatisierung für die Steuerelemente, die sie nicht erkennen können.

Selbst die neueste Anleitung von Microsoft für WinUI-3-Apps, die Befehle winapp ui für KI-Agenten, liest den Barrierefreiheitsbaum der laufenden App und bittet Entwicklungsteams, auf jedem interaktiven Steuerelement eine AutomationId zu setzen.

Die Tools für Webtests im direkten Vergleich finden Sie in der Vergleichsstudie.

Welche Windows-Apps haben keinen Barrierefreiheitsbaum?

Richten Sie Inspect auf eine dieser Anwendungen, und Sie finden oft einen einzigen leeren Bereich, wo Sie ein Formular erwartet haben.Das ist der Alltag beim Testen von Legacy-Anwendungen, und auch bei vielen modernen Apps.

Art der AnwendungWas ein baumbasiertes Tool meist findet
Selbst gezeichnete Steuerelemente: ein Datenraster, ein Menüband, eine Messanzeige, die die App selbst zeichnetEin einziges Rechteck, es sei denn, sein Entwicklungsteam hat die Barrierefreiheit dafür geschrieben
Programme in Delphi (VCL) und Visual Basic 6Beschriftungen und Schaltflächen, die ohne eigenes Fenster gezeichnet werden, und Datenraster, die ihre Zellen hinter Platzhalternamen verbergen
MFC-Programme mit Owner-Draw-SteuerelementenSchaltflächen und Listen, die das Programm selbst zeichnet, oft ohne Namen oder Text
Anwendungen mit Java Swing und AWTNichts Brauchbares, bis die Java Access Bridge eingeschaltet ist, und sie ist standardmäßig aus
Spiele, 3D-Viewer, Zeichenflächen, Diagramme und KartenEin einziges Fenster, das ein Bild enthält
Sitzungen über Citrix, Remotedesktop und VMware HorizonEin einziges Fenster aus Pixeln auf Ihrem Computer
Apps in einer virtuellen MaschineDas Fenster der virtuellen Maschine, mit nichts darin
Electron-Apps, die ohne zugängliche Namen gebaut sindElemente ohne Namen, über den man sie finden könnte
Geschäftsplattformen, die ihre Formulare selbst zeichnenDas eigene Fenster des Formulars, und nichts darin

Manchmal gibt es den Baum, aber Sie dürfen die Anwendung nicht anfassen: ein Programm eines anderen Herstellers, ein für ein Audit gesperrter Build, ein Team, das keine AutomationIds für Sie hinzufügen kann.Jedes Tool, das einen Test-Build, einen Agenten in der App oder eine Änderung an ihrem Code braucht, ist dann außer Reichweite.

So prüfen Sie Ihre eigene App in zwei Minuten

  1. 1

    Ein Inspektionstool öffnen

    Installieren Sie Accessibility Insights for Windows, das Inspektionstool von Microsoft, oder verwenden Sie Inspect aus dem Windows SDK.

  2. 2

    Mit der Maus auf die Elemente zeigen, die Ihre Tests brauchen

    Jedes davon sollte mit einem Namen, einem Typ und einer AutomationId erscheinen.

  3. 3

    Lesen, was Sie sehen

    Ein einziger Bereich für das ganze Fenster oder Elemente ohne Namen bedeuten, dass ein baumbasiertes Tool sie nicht zuverlässig finden kann.

Bildbasiertes Testen: testen, was auf dem Bildschirm ist

Bildbasiertes Testen ist Testautomatisierung, die Elemente daran findet, wie sie auf dem Bildschirm aussehen, nicht daran, was die Anwendung über sie sagt.So funktioniert Desktop-Testautomatisierung ohne Barrierefreiheitsinformationen.Es braucht nichts von der Anwendung: keinen Baum, keinen Locator, keine Änderung an ihrem Code.Wenn Sie ein Element sehen können, kann ein Test es erreichen.

Am Aussehen finden

Auf dem echten Bildschirm, in einem Suchbereich

Wirklich handeln

Echte Maus- und Tastatureingaben

Die Wörter lesen

Der Text, wie der Bildschirm ihn zeigt

Prüfen, was angezeigt wird

Mit dem, was Sie erwarten

SikuliX ist das klassische Open-Source-Beispiel: Sie nehmen von jedem Element ein Bild auf und schreiben jeden Schritt als Skriptzeile.Kommerzielle Tools bieten es als Ausweichlösung an.Die Dokumentation von TestComplete etwa sagt, dass sich seine bildbasierten Tests nur bei Android-Apps aufzeichnen lassen: Bei einer Desktop-App nehmen Sie die Bilder auf und fügen die Testbefehle von Hand hinzu.

Naiv umgesetzt hat das Testen am Aussehen bekannte Schwachstellen.Für jede gibt es eine Antwort:

Die SchwachstelleDie Antwort darauf
Ein verschobenes FensterEine Suche, die sich auf den ganzen Bildschirm ausweitet, wenn das Element nicht mehr dort ist, wo es war
An festen Koordinaten aufgezeichnete KlicksJeder Klick zielt dorthin, wo sein Element jetzt steht
Mehrere identische SchaltflächenEin Suchbereich um jedes Element, sodass Doppelgänger nach ihrer Position unterschieden werden
Ein Farbton heller, eine weichere KanteEin Vergleich, der Rendering-Rauschen ignoriert und trotzdem bei einem echten Unterschied fehlschlägt, den ein Mensch sehen würde
Von Hand aufgenommene BilderEine Aufzeichnung, die jedes Bild für Sie ausschneidet
Eine andere Bildschirmgröße oder SkalierungAufzeichnen mit der Bildschirmgröße und Skalierung, mit denen die Tests laufen

Eine WinAppDriver-Alternative, die keinen Baum braucht

GUI Test Studio ist eine End-to-End-Suite für GUI-Tests unter Windows, die jede Anwendung testet, die Sie auf Ihrem Bildschirm sehen können, ohne Code.Es wählt nicht zwischen dem Baum und dem Bildschirm.

Die GTS Engine + AI fragt zuerst die Barrierefreiheitsinformationen der Anwendung ab, wenn es welche gibt, und findet das Element am Aussehen, wenn es keine gibt.

Wie GUI Test Studio Elemente findet erklärt, wie die beiden Wege zusammenarbeiten.Hier sehen Sie Schritt für Schritt, was das für eine App ohne Baum bedeutet.

  1. 1

    Die App aufzeichnen

    Klicken Sie in GUI Test Runner-Recorder auf Aufzeichnen und wählen Sie Eine App.Suchen Sie das Programm unter den geöffneten Apps aus, oder navigieren Sie zu einem, das noch nicht läuft.Setzen Sie das Häkchen, das es mit dem Test startet und am Ende beendet, damit jeder Lauf mit einer frischen App beginnt.Benutzen Sie die App dann wie immer.

    Der ganze Bildschirm wird immer aufgezeichnet.Die Wahl „Eine App“ bestimmt nur, woher die automatischen Prüfungen kommen.

    Die Wahl einer App hält die Benachrichtigung eines anderen Programms aus Ihrem Test heraus, während jeder Klick und jede Taste, die Sie betätigen, weiterhin aufgezeichnet wird.Siehe Einen Test aufzeichnen.

  2. 2

    Jedes Element wird auf zwei Wegen festgehalten

    Jeder Klick erhält direkt davor eine Bild-Assertion: ein Bild des Elements, ihr visuelles Ziel.Wenn die Anwendung Windows dieses Element beschreibt, behält der Test auch diese Beschreibung.Wenn die App mit einem einzigen leeren Bereich antwortet, gibt es nichts, was sich zu behalten lohnt, und das Bild allein findet das Element.

    Manche Programme zeichnen ihre Formulare selbst und beschreiben nur das eigene Fenster des Formulars.Der Test behält dieses Fenster, sodass ein verschobenes Formular dort wiedergefunden wird, wo es jetzt steht.

  3. 3

    Prüfen, was angezeigt wird

    Eine Bild-Assertion prüft, ob ein Element auf dem Bildschirm ist und richtig aussieht.Eine Text-Assertion fragt die Anwendung, was ein Element sagt, und liest die Wörter auf dem Bildschirm, wenn die Anwendung es nicht sagen kann.Eine Dynamische Text-Assertion prüft einen Wert, der sich bei jedem Lauf ändert, etwa ein Datum oder eine Auftragsnummer, anhand seines Formats.

    Jeder Vergleich ignoriert die kleinen Darstellungsunterschiede, die jeder Bildschirm hat, und erkennt trotzdem die echten Regressionen, die ein Mensch eine Änderung nennen würde: eine falsche Farbe, ein fehlendes Symbol, ein geändertes Wort.Siehe Bildprüfungen.

  4. 4

    Ausführen, wo auch immer sich das Fenster öffnet

    Der Test gibt Ihre Klicks und Tasten als echte Maus- und Tastatureingaben wieder, gezielt dorthin, wo jedes Element jetzt ist.Wenn eine Prüfung ihr Element nach einer Sekunde nicht in ihrem Suchbereich gefunden hat, sucht sie zusätzlich den ganzen Bildschirm ab, sodass ein verschobenes Fenster den Test nicht fehlschlagen lässt.Der Konfidenzbericht meldet dann, dass das Element außerhalb seines Suchbereichs gefunden wurde, und bietet an, diesen in GUI Test Studio zu vergrößern.

    Auf einem Computer mit mehreren Monitoren verwendet ein Test einen Bildschirm oder alle, und er merkt sich seine Wahl.

    Ein Beispiellauf: Der Konfidenzbericht hebt hervor, was sich geändert hat, und sagt es in einfachen Worten.

Citrix, Remotedesktop und virtuelle Maschinen

Eine Sitzung über Citrix, Remotedesktop (RDP) oder VMware Horizon kommt auf Ihrem Computer als ein einziges Fenster aus Pixeln an.Manche Tools erreichen ihre Steuerelemente nur, wenn sie auf dem Remoteserver selbst installiert sind, wie SmartBear es für TestComplete beschreibt.GUI Test Studio testet die Sitzung von dem Computer aus, der sie anzeigt, am Aussehen, wie jedes andere Fenster.

Wählen Sie beim Aufzeichnen Eine App und das Fenster der Sitzung, oder Einen Bereich des Bildschirms für einen Teil davon.Eine App in einer virtuellen Maschine funktioniert genauso: Geben Sie der virtuellen Maschine eine feste Fenstergröße, dieselbe auf jedem Computer, der die Tests ausführt.Siehe Was Sie testen können.

BeispielEine App zur Auftragserfassung über Remotedesktop

Ein Delphi-Programm zur Auftragserfassung läuft auf einem Server, und Ihr Testteam erreicht es über Remotedesktop.Sie zeichnen einen Auftrag im Fenster der Sitzung auf.Jeder Klick erhält seine Bild-Assertion, und Sie fügen eine Text-Assertion hinzu, die auf „Auftrag gespeichert“ wartet.

Beim nächsten Lauf öffnet sich die Sitzung weiter rechts.Jede Prüfung findet ihr Element dort, und jeder Klick folgt ihm.

Desktop-Tests bei jedem Build ausführen

gtr-cli, das Befehlszeilen-Tool zum Ausführen von Tests, führt einen Test genauso aus wie die Schaltfläche „Test ausführen“.Es fügt hinzu, was eine Pipeline braucht: einen Exitcode, eine JUnit-Datei und alle Nachweise eines Fehlschlags in einem Ordner.

Befehl
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifacts

Ein Desktop-Test wird auf einem echten Bildschirm wiedergegeben, deshalb braucht der Build-Agent eine nicht gesperrte Windows-Desktopsitzung.Eine virtuelle Maschine mit fester Bildschirmgröße eignet sich gut als Test-Agent.Der CI/CD-Leitfaden zeigt die Einrichtung Schritt für Schritt.

Fragen

Was kann ich anstelle von WinAppDriver verwenden?

Für eine Anwendung mit vollständigem Barrierefreiheitsbaum lesen die Treiber Appium WinCore und NovaWindows, FlaUI und pywinauto Windows UI Automation aus Code heraus.Für eine Anwendung ohne Baum, oder um ohne Code zu testen, verwenden Sie ein Tool, das Elemente am Aussehen findet, etwa GUI Test Studio, das außerdem zuerst den Baum fragt, wenn es einen gibt.

Wird WinAppDriver noch gepflegt?

Seine letzte stabile Version auf GitHub ist Version 1.2.1 vom November 2020, gefolgt von einem Release Candidate der Version 1.3 im Juli 2021.Die Dokumentation des Appium-Projekts sagt, dass der WinAppDriver-Server seit Jahren nicht mehr von Microsoft gepflegt wird, und nennt den Treiber Appium WinCore als offiziellen Ersatz für den eigenen Windows-Treiber des Projekts.

Wie teste ich eine Anwendung, die keinen Barrierefreiheitsbaum hat?

Testen Sie sie am Aussehen: Finden Sie jedes Element auf dem echten Bildschirm daran, wie es aussieht, handeln Sie mit echten Maus- und Tastatureingaben, lesen Sie die Wörter auf dem Bildschirm und vergleichen Sie, was angezeigt wird, mit dem, was Sie erwarten.GUI Test Studio erstellt all das aus einer Aufzeichnung, sodass Sie kein Bild von Hand aufnehmen und kein Skript schreiben müssen.

Kann ich Tests einer App in einer Citrix- oder Remotedesktop-Sitzung automatisieren?

Ja, von dem Computer aus, der die Sitzung anzeigt.Die Sitzung kommt auf diesem Computer als ein einziges Fenster aus Pixeln an, deshalb findet der Test ihre Elemente am Aussehen, wie in jedem anderen Fenster, ohne dass etwas auf dem Remoteserver installiert wird.

Scheitern bildbasierte Tests, wenn das Fenster verschoben wird?

Nicht, wenn sie gut gemacht sind.GUI Test Studio zielt mit jedem Klick dorthin, wo sein Element jetzt ist, und eine Prüfung, die ihr Element nach einer Sekunde nicht in ihrem Suchbereich findet, sucht zusätzlich den ganzen Bildschirm ab, sodass ein verschobenes Fenster den Test nicht fehlschlagen lässt.

Funktioniert GUI Test Studio auch mit WPF- und Windows-Forms-Apps?

Ja.Wenn eine Anwendung Windows ihre Oberfläche beschreibt, wie es WPF- und Windows-Forms-Apps tun, fragt die GTS Engine + AI sie zuerst und behält diese Beschreibung bei jeder Prüfung.Das Bild wird ebenfalls behalten, sodass der Test das Element auch dann findet, wenn die Antwort der Anwendung einmal nicht ausreicht.

WinAppDriver, Windows, Visual Studio, Selenium, Appium, FlaUI, pywinauto, TestComplete, Ranorex, SikuliX, Delphi, Java, Citrix, VMware Horizon und Electron sind Marken ihrer jeweiligen Inhaber.

Bereit, Ihren ersten Test aufzuzeichnen?

Jede Funktion, 15 Tage lang.

Lieber an der Art von App sehen, die Sie testen?Buchen Sie ein kostenloses 30-minütiges Gespräch mit unserem Team.

Demo buchen