Selenium – Letzte Rettung

Keine Kommentare

Wer mit Selenium arbeitet kennt sicherlich das Problem, dass sich bei „komplizierten“ Webseiten ein mit der Selenium IDE aufgezeichneter Testfall nicht immer erfolgreich abspielen lässt. Kompliziert bedeutet hierbei oft, dass viel JavaScript im Spiel ist. Manchmal kommt es aber noch schlimmer und man findet einfach keinen passenden XPath- oder DOM-Ausdruck, um ein bestimmtes Element korrekt anzusteuern. In einem solchen Fall kann das Simulieren eines „nativen Tastendrucks“ die letzte Rettung sein.

Im folgenden Beispiel wird die Selenium-Library des Robot Frameworks genutzt, da sich das Beispiel dadurch gut lesbar ist. Natürlich lässt sich dies aber auch auf andere Selenium-Libraries übertragen. Im Beispiel wird eine Suchanfrage in Google durchgeführt, bei welcher der Suchen-Button nicht auf dem normalen Weg angeklickt wird – was hier natürlich auch möglich wäre – sondern der Button wird mit Hilfe nativer Tastatureingaben angesteuert.

ScreenshotSelKey1

Es wird zunächst der Suchbegriff in das Eingabefeld eingegeben. Unter der Annahme, dass sich der „Suchen“-Button nicht anders ansteuern lässt, wird nun das Eingabefeld fokusiert. Dann wird einmal TAB gedrückt (Press Key Native 9) womit der „Suchen“-Button den Fokus bekommt. Dort wird dann durch Press Key Native 10 RETURN gedrückt und die Suchabfrage abgeschickt.

Es ist natürlich extrem hilfreich, wenn sich ein bekanntes Feld fokussieren lässt, wobei ja ein Element auf der Seite immer den Fokus hat und sich so durch mehrmaliges TAB drücken immer das passende Element ansteuern lässt. Dies ist aber eine ziemlich hässliche Lösung und lässt sich meist vermeiden, da es extrem selten ist, dass sich kein bekanntes Element auf einer Seite fokussieren lässt. Die benutzten Keycodes sind in java.awt.event.KeyEvent definiert.

Das Simulieren nativer Tastatureingaben hat natürlich einige offensichtliche Nachteile und sollte daher auch nur als letzte Möglichkeit eingesetzt werden. Dann kann es aber in der Tat die „Letzte Rettung“ sein.

Thomas Jaspers

Langjährige Erfahrung in agilen Softwareprojekten unter Einsatz von Java-Enterprise-Technologien. Schwerpunkt im Bereich der Testautomatisierung (Konzepte und Open-Source Werkzeuge).

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.