Blog

Fitnesse - Probleme bei der Selenium-Integration

Cirilo Wortel

Aktualisiert Oktober 23, 2025
3 Minuten
Vor kurzem wurde ich von einem Kunden aufgefordert, eine neue Webanwendung in einem agilen Projekt zu testen. Das Team war neu in der agilen Arbeitsweise und noch mehr in der Zusammenarbeit mit einem funktionalen Tester, was insgesamt dazu führte, dass ich nur sehr wenig Entwicklungsunterstützung vom Team erhielt.Aufgrund des Mangels an Tools und Unterstützung konzentrierte ich mich darauf, Testskripte mit der Selenium IDE aufzuzeichnen, in der Hoffnung, sie wiederverwenden zu können, sobald ich die von mir angeforderte Entwicklungsunterstützung erhalten würde. Der Plan war, die vorab aufgezeichneten Skripte in einer späteren Phase des Projekts in eine umfassendere Testumgebung zu integrieren. Nachdem ich untersucht hatte, welche Möglichkeiten ich hatte, um die Testumgebung erfolgreich zu automatisieren, formulierte ich eine Strategie, um dies in Angriff zu nehmen. Da ich an ein leistungsstarkes Framework wie Fitnesse gewöhnt war, fehlte mir in der Selenium IDE so ziemlich die gesamte Funktionalität, um im Bereich der Anwendung selbst zu arbeiten. Dazu gehören Schritte zur Testvorbereitung, Datenbankzugriff und direkte Aufrufe von Serverprozessen. Außerdem unterstützt die Selenium IDE an sich einfach keinen anderen Browser als Firefox und der Kunde erwartete, dass die Anwendung auf jedem Browser läuft und verlangte ausdrücklich, dass sie zumindest auf IE6/7, Firefox und Safari getestet wird. Im Netz finden sich zahlreiche Blogs darüber, wie man Fitnesse in Selenium integriert. Es gibt sogar ein Webtest-Fixture in Fitnesse, das die Grundlage für diese Integration bildet. Alles, was Sie brauchen, ist eine Fixture, die Selenium aufrufen kann. Die zuvor aufgezeichneten Selenium-Skripte müssen in ein Format konvertiert werden, das Fitnesse versteht. Fitnesse würde dann Selenium RC aufrufen und die für die Aufgabe erforderliche Browserunterstützung aktivieren. Als ein Xebia-Kollege dem Projekt beitrat, ging alles viel schneller und ich bekam meine Implementierung. Er brauchte nur wenig Zeit, um die von mir benötigten Fixtures zu schreiben. In unserem Experiment haben wir festgestellt, dass ein einfacher Treiber ausreicht, damit Fitnesse mit Selenium-Skripten arbeiten kann. Das Wichtigste ist, dass Fitnesse die verschiedenen Selenium-Befehle versteht. Fitnesse Version 3.x enthält eine Skriptvorrichtung, die es sehr einfach macht, ein logisches Skript in einer lesbaren Form zu erstellen, das auch auf den voraufgezeichneten Selenium-Skripten basieren kann. Ein Groovy-Skript übernahm die Übersetzung, der Aufbau des Skripts musste nur geringfügig angepasst werden, um mit der Wiki-Tabelle übereinzustimmen, und einige grundlegende Befehle, die in Selenium IDE verwendet werden, unterscheiden sich von denen, die Selenium RC verwendet, so dass diese übersetzt werden mussten. Das war's dann auch schon. Als ich anfing, das Skript zu verwenden, stieß ich auf einige merkwürdige Probleme. Wenn man zum Beispiel versucht, über Domänengrenzen hinweg zu testen, von unserer Website zu einer anderen und zurück (in unserem Fall war das ein Internet-Zahlungsanbieter), brach Selenium RC mit einem unklaren Fehler ab, während die IDE einwandfrei funktioniert hatte. Wieder kam mein Kollege zu Hilfe. Zu Hause stellte er einige Nachforschungen an und brachte die Sache zum Laufen. Wir mussten nur den -proxyInjectionMode einstellen, da wir beim Kunden hinter einem Proxy arbeiteten. Doch auch dies löste das Problem nicht vollständig, Selenium endete mit einer seltsamen Session Exception. Jedes Mal, wenn Selenium die Domäne durchquerte, startete es eine neue Sitzung und verlor dabei die Proxy-Einstellungen der ursprünglichen Browser-Sitzung. Dieses Problem war nun etwas kniffliger. Nach umfangreichen Nachforschungen fanden wir heraus, dass Firefox jedes Mal, wenn er eine neue Sitzung startete, dies mit einem leeren Profil tat, wodurch unsere Proxy-Einstellungen verloren gingen. Wie sich herausstellte, hatten die Jungs von Selenium die Lösung für dieses Problem bereits implementiert. Wir mussten nur mit dem Parameter -firefoxProfileTemplate auf die richtige Firefox-Profilvorlage verweisen. Der endgültige Startbefehl sah also in etwa so aus: java -jar selenium-server.jar -firefoxProfileTemplate /Users/cirilowortel/Library/Application Support/Firefox -proxyInjectionMode'

Verfasst von

Cirilo Wortel

Cirilo Wortel is an Agile Test Consultant at Xebia

Contact

Let’s discuss how we can support your journey.