Skip to content

Selenium Tests mit NetBeans und PHP

Selenium-Tests können elegant direkt in NetBeans für PHP erstellt und aus NetBeans heraus ausgeführt werden. Leider funktioniert das unter bestimmten Umständen nicht out-of-the-box, sondern macht einige Kniffe notwendig.

NetBeans-Plugin installieren

Ich gehe davon aus, dass ihr alles notwendige für die PHP-Entwicklung installiert habt. Das schließt PHPUnit ein, auf das die Selenium-Tests zurückgreifen. Wie man Selenium in PHPUnit integriert, wird hier ausführlich beschrieben.

Auf meinem Ubuntu-Rechner mit NetBeans 6.9.1 und Firefox 3.6.12 lässt sich das Selenium Module for PHP aus dem NetBeans Beta-Repository einfach installieren: Unter "Extras > Plugins > Einstellungen" das Häkchen bei "NetBeans Beta" setzen, dann steht das Selenium-Modul zur Auswahl und kann installiert werden. Anschließend lässt sich nach Rechtsklick auf das Projekt im Projektmanager der Punkt "Run Selenium Tests" aus dem Kontextmenü auswählen. Zunächst muss ein Verzeichnis ausgewählt werden, in dem die Testdateien abgelegt werden. Ich habe den Ordner selenium direkt neben nbprojects in meinem Projektverzeichnis angelegt und als Testverzeichnis ausgewählt.

Da wir noch keine Testdateien erstellt haben, wird auch noch nichts ausgeführt, aber das Verzeichnis wird als Selenium Test Files aufgeführt. Wiederum über das "Kontextmenü > Neu" kann jetzt ein "Selenium Test Case for PHP" erstellt werden. Dabei legt NetBeans freundlicherweise schon das Code-Gerüst für den neuen Test-Case an. Natürlich kann, wer möchte, auch manuell Test-Cases im Test-Verzeichnis anlegen oder den PHP-Code aus der Selenium IDE (= Firefox-Extension) herausgenerieren lassen. Die NetBeans-Vorlage sieht etwa wie folgt aus.

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class newSeleneseTest extends PHPUnit_Extensions_SeleniumTestCase
{
    protected function setUp()
    {
        $this->setBrowser("*chrome");
        $this->setBrowserUrl("http://change-this-to-the-site-you-are-testing/");
    }

    public function testMyTestCase()
    {
        
    }
}

Unabhängig davon, welchen Test man in testMyTestCase() implementieren möchte, gilt es jetzt noch einige Stolpersteine aus dem Weg zu räumen.

Browser vorbereiten

Obowohl Selenium auch mit Google Chrome, Opera und diversen anderen Browsern funktioniert, wird Firefox vermutlich am besten unterstützt. Daher gilt es, zunächst ein separates Firefox-Profil für die Tests anzulegen. Sehr einfach geht das mit dem Profil-Manager, der über den Befehl firefox -P aufgerufen wird. Diese Schritt-für-Schritt-Anleitung erklärt das Vorgehen genauer und beschreibt zusätzlich noch einige Geschwindigkeitsoptimierungen.

Ich habe außerdem den Pfad zu meinem Firefox in der setUp-Methode wie folgt gesetzt. Ob das immer notwendig ist, kann ich leider nicht sagen.

$this->setBrowser("*firefox /usr/lib/firefox-3.6.12/firefox-bin");

Wer denkt, jetzt könne er den Test bereits ausführen, wird allerdings enttäuscht werden. Die Integration in NetBeans hat zwar den Vorteil, dass der Selenium-Server (Selenium RC), ein Java-Programm, nicht jedesmal manuell gestartet werden muss. Aber der Selenium-Server, der mit dem NetBeans-Plugin ausgeliefert wird, ist veraltet und arbeitet nicht mit dem Firefox 3.6 zusammen (wenn ich das richtig sehe, war bei mir als höchste Version die 2.0 eingetragen!).

Selenium Server RC austauschen

Es führt also kein Weg daran vorbei, Selenium RC herunterzuladen und einen Blick in das gut 20 MB große Archiv zu werfen. Dort befindet sich im Verzeichnis selenium-server-1.x.x die Datei selenium-server.jar. Diese extrahiert ihr aus dem Archiv nach ~/.netbeans/6.9/modules/ext/selenium, also ins NetBeans-Konfigurationsverzeichnis in eurem Home-Dir. Dann ersetzt ihr den alten durch den aktuellen Server:

$ cp selenium-server-1.0.1.jar selenium-server-1.0.1.jar.BAK
$ mv selenium-server.jar selenium-server-1.0.1.jar

Eventuell sollte NetBeans jetzt einmal neu gestartet werden. Aber dann steht dem erfolgreichen Testen nichts mehr im Wege. Werden die Selenium-Tests ausgeführt, öffnet sich der Browser mit dem oben angelegten Profil, rattert die Tests durch, und am Ende heißt es dann hoffentlich: 100,00% der Tests erfolgreich!

Fazit

Seit meinem Umstieg von Zend Studio auf NetBeans vor etwa einem halben Jahr bin ich zunehmend begeistert von der schlankeren, schnelleren IDE, die nicht auf dem mächtigen Eclipse aufbaut. Mittlerweile steht PHP-Entwicklern mit NetBeans eine mindestens gleichwertige Alternative zur Verfügung. Die gelungene Integration von Unit- und auch Selenium-Tests sind nur ein weiteres Argument, das dafür spricht, NetBeans zumindest einmal auszuprobieren. Natürlich wäre es schöner, wenn auch dieses Feature gleich funktionieren würde bzw. nicht mehr "beta" wäre. Aber mal ehrlich: Die Vorteile wiegen diese Problemchen klar auf, und auch unter Eclipse läuft nicht alles auf Anhieb.

Trackbacks

dc7590 am : dc7590 via Twitter

Vorschau anzeigen
RT @mattsches: has blogged about: Selenium Tests mit NetBeans und PHP: Selenium-Tests direkt in NetBeans für PHP... http://bit.ly/gX7sj0

viking_olof am : viking_olof via Twitter

Vorschau anzeigen
Selenium Tests mit NetBeans und PHP http://t.co/0PNslcCP #php

Grommouth am : Grommouth via Twitter

Vorschau anzeigen
RT @viking_olof: Selenium Tests mit NetBeans und PHP http://t.co/0PNslcCP #php

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Markdown-Formatierung erlaubt
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!