Selenium und SSL-Zertifikate

3 Kommentare

Das Testen von Web-Seiten mit Selenium ist dank umfangreicher Tools sehr effizient möglich. Mit dem Firefox-PlugIn Selenium-IDE lassen sich die Testschritte aufzeichnen und später dann wieder abspielen. Um eine echte Testautomatisierung zu erreichen wird häufig auch eine Integration mit einem agilen Test-Tool – wie z.B. dem Robot Framework – vorgenommen, welches seine eigene Selenium-Implementierung mitbringt.

Das automatisierte Testen von Webseiten wird jedoch in dem Moment jäh aus gebremst in dem eine Seite angesteuert, die mit SSL verschlüsselt ist, jedoch ein nicht autorisiertes Zertifikat nutzt. Der Browser macht eine Vollbremsung und es öffnet sich ein Dialog, der den Benutzer auffordert das Zertifikat zu akzeptieren. Das ist natürlich nicht wirklich praktisch während eines automatisierten Tests.


Hier lauert nun die erste Stolperfalle, denn was liegt näher als während einer solchen Abfrage das Zertifikat zu speichern und das Problem so zu lösen. Leider wird schon beim nächsten Testdurchlauf klar, dass sich das Problem so nicht lösen lässt, denn die SSL-Abfrage ist wieder zurück. Der Grund hierfür ist, dass Selenium bei jedem neuen Start ein neues temporäres Firefox-Profil erstellt und dieses für die Tests nutzt. Dies hat den Vorteil, dass es zu keinen Deadlock-Situationen kommen kann und insbesondere wird so ein wirklicher Basis-Firefox genutzt, der keine (überflüssgen) PlugIns installiert hat. Was aber jetzt tun mit dem Zertifikat-Problem?

Die Lösung ist zum Glück relativ einfach und basiert wiederum auf Firefox-Profilen. Hierzu muss zunächst ein neues Firefox-Profil angelegt werden. Dann startet man Firefox mit diesem Profil und akzeptiert auf den betroffenen Web-Seiten die entsprechenden Zertifikate permanent. Danach sollte man aus diesem Profil alle Dateien löschen, bis auf die Dateien mit den Zertifikat-Informationen. Danach startet man den Selenium-Server mit einer Firefox-Profile-Template Option, so dass die entsprechenden Dateien aus dem angegebenen Profil quasi die Dateien aus dem temporären Profil überschreiben. In dieser Konfigurationen laufen die Tests nun ohne weitere Abfragen bzgl. der SSL-Zertifikate durch. Natürlich ist es möglich zu einem späteren Zeitpunkt Firefox wieder mit dem neuen Profil zu starten und dann weitere Zertifikate zu akzeptieren. Danach sollten jedoch die dann neu erstellten – und überflüssigen – Dateien erneut aus dem Profil-Verzeichnis gelöscht werden.

Das so erstellte Profil sollte nicht für die normale Arbeit mit dem Firefox genutzt werden, sondern nur für die Tests. Dies garantiert, dass das Test-Profil „sauber“ bleibt. Nach den Arbeiten mit dem Profil sollte Firefox also wieder mit dem ursprünglichen (default) Profil gestartet werden.

Im folgenden sind noch einmal die konkreten Schritte aufgelistet, um die oben beschrieben Konfiguration zu erstellen.

1. Neues Firefox-Profil erstellen
Hierzu muss Firefox über die Kommandozeile mit der „-P“ Option gestartet werden. Unter Windows mit einer Default-Installation geschieht dies durch das Kommando:
„C:\Programme\Mozilla Firefox\firefox.exe“ -P

In der Dialogbox kann dann ein neues Profil erstellt werden. Der gewählte Name ist hierbei beliebig. Es sollte jedoch darauf geachtet werden das Verzeichnis zu ändern, so dass ein Verzeichnisname ohne Leerzeichen genutzt wird, um später Probleme zu vermeiden. Idealerweise sollte das Verzeichnis innerhalb des Testprojekts liegen und kann dann mit unter Versionskontrolle genommen werden, z.B. C:\Subversion\Project\FF_Profile

Es wird empfohlen die beiden Dateien unter Versionskontrolle zu stellen, da so nicht jeder Entwickler alle Webseiten ansteuern muss, um dort die Zertifikate zu akzeptieren, sondern die Cert-Dateien können gemeinsam genutzt werden. Dies hat auch den großen Vorteil, dass diese Dateien problemlos (und ohne die Hilfe eines Entwicklers) von einem Administrator auf einem offiziellen Selenium-Testserver installiert werden können indem ein neues Profil erzeugt wird und dann die beiden Dateien in das entsprechende Verzeichnis kopiert werden.

2. Zertifikate akzeptieren
Nun kann Firefox mit dem neuen Profil gestartet werden. Dann steuert man die entsprechenden Seiten an und akzeptiert dort permanent die Zertifikate.

3. Profil bereinigen
Jetzt wechselt man in das Profil-Verzeichnis und löscht dort alle Dateien bis auf cert8.db und cert_override.txt.

4. Selenium-Server mit Profil-Template starten
Jetzt kann der Selenium-Server mit dem neuen Profil-Template gestartet werden:
java -jar selenium-server.jar -firefoxProfileTemplate

Mit dem Verzeichnis aus obigem Beispiel:
java -jar selenium-server.jar -firefoxProfileTemplate C:\Subversion\Project\FF_Profile

Natürlich sollten auch alle weiteren projekt-spezifischen Selenium-Parameter weiterhin gesetzt werden.

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

Kommentare

Kommentieren

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