Anwendungen automatisieren – AutoIT und Sikuli im Vergleich

Gesucht wurde eine Automatisierungslösung mit der sich verschiedenste Anwendungen automatisieren lassen, Sikuli und AutoIT stellten sich als geeignetste Kandidaten heraus, natürlich auch weil diese Open-Source sind.

Anwendungen automatisieren mit AutoIT

AutoIT ist eine Automatisierungslösung die mithilfe einer BASIC ähnlichen Script-Sprache Benutzerinteraktionen in Anwendungen automatisieren kann. Die GUI-Anwendungselemente wie Buttons, Felder oder Fenster werden dabei erkannt und können über deren interne Klassenname bzw. Titel gesteuert werden. Die Au3-Scripte lassen sich direkt ausführen oder in eine einzige EXE-Datei kompilieren und sind somit auch ohne AutoIT lauffähig.

Nach anfänglicher Begeisterung stellte sich jedoch AutoIT als ungeeignet heraus, da sich mit AutoIT weder Java noch Citrix Anwendungen automatisieren lassen. Webanwendungen sind durch eine mitgelieferte Internet Explorer-Funktionsbibliothek (IE.au3) relativ einfach automatisierbar und native Windows Anwendungen ebenfalls. Bei einer „normalen“ Anwendungen gab es dennoch Probleme: SAP. Das mitgelieferte Tool zum Erkennen von Anwendungselementen schlug hier fehl, da die SAP-Bedienelemente wohl Windows fremde GUI-Klassen verwenden und so anstatt einzelner Baum-Elemente nur der gesamte Navigationsbaum angezeigt werden konnte. Die Steuerung von SAP mit AutoIT war dann nur noch durch Tastatureingaben automatisierbar, .d.h. nicht unmöglich aber unpraktisch.

Anwendungen automatisieren mit Sikuli bzw. Sikuli-API

Sikuli verfolgt wiederum einen ganz anderen Ansatz: die Anwendungen werden rein grafisch automatisiert, für jedes zu klickende Element wird eine Grafik (Teil-Screenshot) hinterlegt. Auf diese wird gewartet und bei deren Erscheinen eine Aktion ausgeführt (Klick, Texteingabe, …). Durch eine mitgelieferte visuelle Entwicklungsumgebung (IDE) in Jython-Sprache oder direkt mit einer Java-API lassen sich mit Sikuli bequem Anwendungen automatisieren.

Nachteil dieses Verfahrens ist natürlich, dass eine grafische Erkennung durch vorher hinterlegte Bilder nicht immer einwandfrei funktioniert. So muss immer sichergestellt sein, dass die Fenstergröße der Anwendung in etwa gleich bleibt und es keine anderen Bedienelemente gibt, die den gewünschten ähneln. Auch eine Änderung der Anwendung durch Updates, die das Aussehen verändern ist bei Sikuli dann natürlich ein Problem. Mit Schwellwerten lässt sich zudem die Erkennungsrate herauf- oder herabsetzen, hier muss von Fall zu Fall unterschieden werden. Bei einer Sikuli Automatisierung sollte zudem auch kein anderes Fenster die Sicht auf die Anwendung verdecken.

Fazit

Der wohl größte Vorteil von Sikuli gegenüber AutoIT ist jedoch, dass diese Automatisierungslösung anwendnungs- und plattformunabhängig (Linux, Windows) ist. So ist es zum Beispiel denkbar, Programme auch über VNC remote zu automatisieren oder eben Citrix-Anwendungen.

Da der Einarbeitungsaufwand in etwa gleich ist lohnt es sich Sikuli (bzw. Sikuli-API) zu verwenden, da man mit diesem Tool jegliche Anwendungen automatisieren kann. Will man dagegen nur einfache Windows-Anwendungen automatisieren, wirkt AutoIT robuster und simpler zu implementieren.