Automation von Admin Web UIs

By Gerald Mücke | November 23, 2015

Automation von Admin Web UIs

In besondere beim Betrieb von Legacy Web Anwendungen gibt es häufig wiederkehrende administrativen Aufgaben. Nicht selten gibt es für derartige Anwendungen eine Administrationsoberfläche, jedoch keine für Administration nutzbare Service Schnittstelle. Dennoch können administrative Aufgaben mit einfachen Mitteln automatisiert werden, sofern die Weboberfläche aus HTML- und HTTP-Sicht gut strukturiert ist. Von Vorteil ist zusätzlich, wenn die Client-Server Interaktion nicht zu stark auf Server-seitige Session States setzt und für verschiedene Operationen auch verschiedene Einsprungpunkte liefert.

Ein gutes Beispiel sind hier Struts-basierte Applikationen, die mit den Struts-Actions ein Pendant zu Rest-Resourcen darstellen. Weniger optimal sind JSF oder auch GWT basierte Applikationen, die sehr stark auf Server Sessions setzen oder die Kommunikation weniger klar und über zusätzliche Schichten erfolgt.

Ist eine gut strukturierte Web-Oberfläche gegeben und auch die Einsprungpunkte klar, so bieten sich eine Reihe von Frameworks zur Automatisierung an:

Selenium

Das eigentlich für die Automation von UI Tests entwickelte Framework bietet einen Recorder an, mit dem Aktionen aufgezeichnet und wieder abgespielt werden können. Die so aufgezeichneten Makros können in Java Code abgespeichert und modifiziert werden. Selenium bietet neben einem Headless Modus, der sich für Ausführung via Kommandozeile anbietet, auch direkte Unterstützung für diverse Browser. Diese verschiedenen WebDriver haben den Vorteil, dass sie auch JavaScript interpretieren können, jedoch teilweise von der Interpretation des Document Object Models (DOM) abweichen. Selenium ist für die Administration von Applikationen vergleichsweise schwergewichtig, kommt durch die Browserunterstützung jedoch auch mit aufwändigen und Javascript-lastigen Oberflächen zu Recht.

HtmlUnit

HtmlUnit ist ein Framework zum Schreiben von Unit Tests gegen HTML Oberflächen. Anders als Selenium bietet es keinen Browser-support und die Ausführung von Javascript ist für Seiten, die für bestimmte Browser optimiert worden, eingeschränkt. HtmlUnit bietet eine API zum Aufrufen und Navigieren von Html Seiten.

Jsoup

Jsoup ist eine relative neue Bibliothek zum Aufrufen und Parsen von HTML Seiten. Die API ist sehr einfach, so dass man schon mit wenigen Zeilen Code Elemente einer WebSeite auslesen kann. Jsoup hat jedoch keinem Javascript-Support.

Zusammenfassung

Je nach Komplexität der Seite und der Einstiegspunkte für Aktionen kann eine andere Library zum Einsatz kommen. Wenn möglich, sollte die Wahl dabei immer auf das leichtgewichtigere Framework fallen, da dies die Komplexität und damit auch den Entwicklungs- und Wartungsaufwand reduziert.

comments powered by Disqus