45.1.10.3
Klassenzuweisung für komplexe Komponenten wie Tabellen

Der Ansatz aus den vorherigen Abschnitten funktioniert sehr gut für jede Art von Standardkomponente, wie Buttons oder Checkboxen. Aber neben diesen Komponenten, gibt es noch komplexe Komponenten in einer GUI. Diese Komponenten beinhalten Datensätze, welche wir meistens direkt ansprechen sollten, z.B. mit der Elementsyntax von QF-Test. Solche Komponenten können Tabellen, Bäume oder Listen sein. Hierfür müssen wir sowohl der Komponente wie auch den Datensätzen selbst generische Klassen zuweisen.

Aktuelle Aufzeichnung Verbesserte Aufzeichnung
Aktuelle Aufzeichnung Verbesserte Aufzeichnung
Abbildung 45.13:  Verbesserung durch Zuweisung komplexer Komponenten

Unser Beispiel bezieht sich auf die Tabelle, die die Fahrzeuge beinhaltet. Anfangs müssen wir wieder einige Mausklicks bzw. Checks auf die angezeigten Fahrzeuge aufzeichnen. Jetzt erhalten wir eine Aufzeichnung wie diese:

WebCarConfigTable
Abbildung 45.14:  Aufzeichnung einer Tabelle im WebCarConfigurator

Es wurde ein Klick auf eine TD Komponente, die unter einer TR Komponente, welche unter einer TABLE Komponente liegt, aufgezeichnet. Die aufgezeichnete TD Komponente beinhaltet auch das weitere Merkmal class mit dem Wert dataCell. Bei der TR Komponente steht dort dataRow, bei der TABLE steht dort dataTable.

Wenn wir nun schrittweise diese Komponenten selektieren und dabei beobachten, welche Komponente im SUT hervorgehoben werden, kommen wir zu folgendem Schluss:

Eine TD Komponente steht hier für eine Tabellenzelle, eine TR Komponente steht für eine Tabellenzeile und die TABLE Komponente steht für die gesamte Tabelle. Außerdem werden für die korrekte Indexierung über Spaltentitel auch die Überschriftenzeile sowie die einzelne Überschrift benötigt. Die ersten drei Komponenten sehen wir uns jetzt näher an, um diesen eine generische Klassen zuweisen zu können. QF-Test möchte nämlich für Tabellen genau diese fünf Klassen auflösen, siehe installCustomWebResolver - Tabelle und TreeTable.

Fangen wir mit dem TABLE Knoten an. Hier gibt es wieder ein class Attribut mit dem Wert dataTable. Das ist ein klares Zeichen, dass dieser Wert dataTable eine Tabelle repräsentiert. Nun gehen wir also wieder zum Prozeduraufruf von qfs.web.ajax.installCustomWebResolver und passen den Parameter genericClasses auf dataTable=Table,textfield=TextField,button=Button an.

Nun kommt die Tabellenzeile an die Reihe. Auf der TR Komponente finden wir wieder das class Attribut, diesmal mit dem Wert dataRow. Das ist wiederum ein klares Zeichen. Jetzt müssen wir also wieder den Prozeduraufruf von qfs.web.ajax.installCustomWebResolver anpassen und setzen den Wert für den Parameter von genericClasses auf dataRow=TableRow,dataTable=Table,textfield=TextField, button=Button.

Zu guter Letzt nehmen wir uns die TD Komponente vor. Überraschenderweise finden wir hier wieder das class Attribut, diesmal mit dem Wert dataCell. Also, passen wir wieder den genericClasses Parameter des Prozeduraufrufes an, nun auf dataCell=TableCell,dataRow=TableRow,dataTable=Table, textfield=TextField,button=Button. Bitte beachten Sie, dass Ihnen auch erlaubt ist, nach jedem Komma einen Zeilenumbruch einzufügen.

Der nächste Schritt ist die zuvor aufgezeichneten Komponenten zu löschen, den Prozeduraufruf von qfs.web.ajax.installCustomWebResolver auszuführen, die Webseite neuzuladen und die Klicks nochmals aufzuzeichnen.

Als Resultat bekommen wir eine für QF-Test typische Aufzeichnung eines Elements, wie VehicleTable@Model&0 (oder jede andere Zeile, je nachdem was Sie angeklickt haben). Die aufgezeichneten Komponenten beinhalten nun nur noch eine Table Komponente ohne weitere Unterkomponenten, denn diese werden ab jetzt als Elemente von QF-Test behandelt.

WebCarConfigTableCustom
Abbildung 45.15:  Aufzeichnung einer aufgelösten Tabelle im WebCarConfigurator

Nachdem wir nun eine komplexe Komponente auflösen konnten, finden Sie eine Beschreibung des weiteren Vorgehens im nächsten Abschnitt.