Sulfur ist ein Werkzeug um einfach menschenlesbare Tests von Webanwendungen zu schreiben. Es handelt sich um einen It is a FitNesse-Adapter, der unter der Haube Selenium verwendet. FitNesse ist ein Wiki, um Tests in einer für Menschen leicht lesbaren Art und Weise zu schreiben. Selenium dienst dazu, den Browser zu steuern.
Mit Sulfur können Sie automatisierte GUI-Tests in dieser Art schreiben:
!| script | Browser |
| lade | http://example.com/holidays |
| Titel ist | Mein Urlaubsplaner |
| klicke auf | id:datepicker|
| klicke auf | xpath://a[@title='Weiter>'] |
| klicke auf | link:8 |
| klicke auf | id:submitButton|
| Element | id:missingNameMessage | ist sichtbar |
| Element | id:missingNameMessage | hat Text | Bitte geben Sie Ihren Namen ein |
| schreibe | Hans Meier | in | name:lastname |
| Element | id:missingNameMessage | ist unsichtbar |
Sie benötigen Java 7, um Sulfur und FitNesse auszuführen. Installieren Sie zunächst Java 7 (JDK or JRE), falls es nicht bereits installiert ist.
-
Erstellen Sie ein Verzeichnis für ihr erstes Sulfur-Projekt.
-
Laden Sie FitNesse herunter und legen Sie die Datei fitnesse-standalone.jar in das gerade angelegte Projektverzeichnis.
-
Laden Sie Sulfur herunter und legen Sie die Datei sulfur-1.x-complete.jar ebenfalls in das Projektverzeichnis.
-
Öffnen Sie ein Terminal, wechseln Sie in das Projektverzeichnis und geben dann ein:
java -jar fitnesse-standalone.jar
Dadurch wird (beim ersten Aufruf) die grundlegende Wiki-Struktur erzeugt und der Wiki-Server gestartet.
-
Öffnen Sie http://localhost/FrontPage?edit in Ihrem Browser und erstzen Sie den Inhalt der angezeigten Seite durch:
!define TEST_SYSTEM {slim} !path *.jar !contents -R -g -p -f -h
Klicken Sie anschließend auf 'save'.
Diese Konfiguration weist FitNesses an, die SLIM-Engine zu nutzen und sagt, wo sich Bibliotheken (wie Sulfur) befinden.
Das ist alles! Sie können jetzt anfangen automatisierte GUI-Tests zu schreiben.
Um Wiederholungen auf allen Seiten zu vermeiden, können Sie Seiten namens 'SetUp' und 'TearDown' anlegen, um etwas vor oder nach den Tests auf einer Seite auszuführen. Diese beiden Seiten werden automatisch in die Testseiten eingebunden.
Öffnen Sie http://localhost/FrontPage in Ihrem Browser und klicken Sie auf 'Add > Test page'. Geben Sie 'SetUp' im Feld 'page name' und schreiben Sie folgenden Text in den Inhaltsbereich:
|Import|
|de.advitec.sulfur.lang.de|
Klicken Sie auf "save", gehen Sie zurück zu http://localhost/FrontPage und fügen Sie eine weitere Seite namens 'TearDown' mit folgendem Inhalt an:
!|script|Browser|
|schließen|
Wenn Sie die Tests auf Englisch schreiben wollen, verwenden Sie de.advitec.sulfur
in der Importanweisung und ersetzen Sie schließen
durch close
.
Öffnen Sie http://localhost/FrontPage in Ihrem Browser und klicken Sie auf 'Add > Test page'. Geben Sie der Seite einen aussagekräftigen Namen und schreiben Sie den Testcode in den Inhaltsbereich. Beachten Sie bei der Namenswahl, dass FitNesse-Seiten mitten im Namen mindestens einen Großbuchstaben erfordern (Beispiel: MeinTest).
Es gibt derzeit drei Arten von Adaptern: Browser, Listen und Tabellen. Beispiel:
!| script | Browser |
| get | http://example.com/holidays |
| title is | Mein Urlaubsplaner |
| click on | id:datepicker|
!| query:List | id:someElement |
| items |
| 2013-08-08 |
| 2013-08-09 |
!| Subset query:Table | id:employees |
| Datum | Verbleibend | Name |
| 2013-08-13 | 9 | Meyer |
| 2013-08-13 | 9 | Meyer2 |
Klicken Sie auf 'save'. Jetzt können Sie die Testseite ausführen, indem sie auf die Schaltfläche 'Test' klicken.
Bestimmte Elemente einer HTML-Seite werden mit Selektoren ausgewählt. In dem obigen Beispiel wird der id
-Selektor verwendet, um Elemente anhand ihrer ID zu finden.
Sie finden alle Adaptermethoden mit Beispielen in der API-Dokumentation.
Um Aktionen auf einem bestimmten HTML-Element auszuführen, müssen Sie ausdrücken können, um welches Element es sich handelt. Sie tun das durch einen der folgenden Selektoren.
Selektor | Beschreibung | Beispiel-Selektor | passt auf Beispiel-HTML |
---|---|---|---|
id | Attribut 'id' | id:loginButton | <input type="submit" id="loginButton" /> |
Name | Attribut 'name' | name:email | <input type="text" name="email" /> |
Tag | Name des Tags | tag:h1 | <h1>Beispiel</h1> |
Link | Linktext | link:Anmelden | <a href="...">Anmelden</a> |
linkPart | Teil des Linktexts | linkPart:Anm | <a href="...">Anmelden</a> |
class | Attribut CSS-Klasse | class:auth | <a href="..." class="auth" >Anmelden</a> |
xpath | Ausdruck, um ein XML-Element zu lokalisieren | xpath://input[@alt='Search'] | <input type="image" src="some.gif" alt="Search" title="Search"> |
css | CSS-3-Selektor | css:.category button | <div class="category"><button class="confirmation">OK</button></div> |
XPath und CSS 3 Selectors werden detailliet auf der W3C-Website erläutert.
Sie können den Browser mit folgenden Methoden steuern:
| browser | chrome |
| lade | http://example.com |
| klicke auf | id:someElement |
| schreibe | ein Wert | in | id:einElement |
| wähle Text | ein Wert | in | id:einElement |
| wähle Wert | einWert | in | id:einElement |
| wähle Position | 0 | in | id:einElement |
| pausiere | 10 | Sekunden |
| Titel ist | Ein Seitentitel |
| Element | id:einElement | hat Text | ein Text |
| Element | id:einElement | ist aktiv |
| Element | id:einElement | ist inaktiv |
| Element | id:einElement | ist sichtbar |
| Element | id:einElement | ist unsichtbar |
| url is | http://example.com |
| Element | id:einElement | hat Attribut | einAttribut | mit Wert | einWert |
| Element | id:einElement | hat Attribut | einAttribut |
| Element | id:einElement | existiert |
| Element | id:einElement | existiert nicht |
| close |
Um andere Browser als Firefox nutzen zu können, müssen sie die entsprechenden Treiber herunterladen. Die Treiberdateien müssen in ein im Systempfad (Umgebungsvariable PATH) enthaltenes Verzeichnis gelegt werden. Und natürlich müssen die gewünschten Browser selbst installiert sein.
- Chrome: Dokumentation, Treiber
- Internet Explorer: Dokumentation
- Opera: Dokumentation
- iPhone: Dokumentation
- Android: Dokumentation
Mehr Informationen über Browser-Treiber.
Sulfur ist ein Geschenk von ADVITEC Informatik GmbH