Scrollen im Web mit QF-Test – Die vollständige Anleitung

Eine Frage, die beim Testen von Webanwendungen mit QF-Test immer wieder aufkommt, ist: Wie scrolle ich? Wie löse ich ein Scroll-Event aus? Kann ich QF-Test sagen, dass es am Mausrad drehen soll? Kann ich Scrollen mit der Maus in QF-Test irgendwie simulieren? Ich will doch nur ein bisschen nach unten scrollen!

Unsere erste Antwort auf solche Fragen ist immer: Sie sollten das eigentlich nicht müssen. QF-Test kümmert sich automatisch ums Scrollen und bringt Elemente selbständig in den sichtbaren Bereich, sobald es mit ihnen interagieren muss. Deshalb zeichnet QF-Test keine Scroll-Ereignisse auf und bietet auch keinen „Scrollen“-Knoten an – in 99% der Fälle tut QF-Test automatisch das Richtige.

Aber vermutlich sind Sie hier, weil Sie zu den 1% gehören, bei denen dieser Mechanismus nicht ausreicht. In diesem Blog-Beitrag erkläre ich daher genau, wie Scrollen in einer Webanwendung mit QF-Test funktioniert – und wie Sie selbst die Kontrolle übernehmen können.

Manuelles Scrollen per Tasteneingabe

Wenn Sie einfach nur „ein bisschen“ scrollen möchten, sollten Sie zunächst versuchen, Tastaturereignisse aufzuzeichnen.

In den meisten Webanwendungen können Sie mit den Pfeiltasten scrollen. Leertaste und Umschalt+Leertaste scrollen um etwa eine Fensterhöhe, und die Tasten Pos1 und Ende sollten ganz nach oben bzw. unten scrollen. Damit können Sie sich vielleicht die komplizierteren Methoden weiter unten sparen.

Den Scroll-Algorithmus von QF-Test anpassen

Angenommen, QF-Test scrollt bereits für Sie, aber noch nicht so ganz wie gewünscht. Dann können Sie über verschiedene SUT-Optionen das Scrollverhalten konfigurieren.

Diese Optionen können Sie in einem SUT-Skriptknoten setzen oder mit dem @option Doctag in QF-Test 9.

Options.OPT_WEB_SCROLL_VISIBLE

Diese Option steuert, wie Web-Knoten sichtbar gescrollt werden. Mögliche Werte sind:

  • Options.VAL_WEB_SCROLL_VISIBLE_DEFAULT (nutzt den QF-Test Algorithmus),
  • Options.VAL_WEB_SCROLL_VISIBLE_NEVER (verhindert Scrollen komplett),
  • Options.VAL_WEB_SCROLL_VISIBLE_TOP
  • Options.VAL_WEB_SCROLL_VISIBLE_BOTTOM
  • Options.VAL_WEB_SCROLL_VISIBLE_MINIMAL
  • ein benutzerdefinierter JSON-String entsprechend dem options-Parameter der Element:scrollIntoView JavaScript-API

Alle Werte außer „default“ und „never“ rufen node.scrollIntoView() direkt im JavaScript-Kontext des Browsers auf. scrollIntoView ist ein ziemlich mächtiger Teil der JavaScript-Element-API. Alle erweiterten Optionen dieser Methode finden Sie in den mdn web docs.

Sie können diese Option auch nur für ein einzelnes Element überschreiben, indem Sie das property qfs:scrollvisible am Node-Objekt setzen:

def node = rc.getComponent("myElement") // durch die QF-Test ID der Komponente ersetzen
node.setProperty("qfs:scrollvisible", Options.VAL_WEB_SCROLL_VISIBLE_NEVER)

Options.OPT_WEB_MIN_DELAY_AFTER_AUTO_SCROLL

Mit dieser Option können Sie eine zusätzliche Verzögerung nach jeder automatischen Scroll-Aktion einführen, in ms. Das ist nützlich, wenn Ihre Anwendung Animationen verwendet, die durch Scrollen ausgelöst werden, oder falls die Anwendung nach dem Scrollen etwas Zeit braucht, um Daten nachzuladen. Der Standardwert ist 150.

Options.OPT_PLAY_SCROLL_ITEM

Wenn auf False gesetzt, scrollt QF-Test nicht automatisch zu Unterelementen von Listen, Tabellen oder Bäumen. Das kann helfen, wenn QF-Test beim Navigieren z.B. in einem Baum an unerwartete Stellen scrollt.

Options.OPT_PLAY_SCROLL_PADDING

Zusätzlicher Abstand beim automatischen Scrollen, in px. Damit können Sie die berechneten Scrolldistanz vergrößern oder verkleinern, sodass mehr oder weniger von der Umgebung des Ziel-Elements sichtbar bleibt. Standardwert: 5.

Options.OPT_PLAY_WEB_AUTO_SCROLL

Wenn auf False gesetzt, wird überhaupt kein automatisches Scrollen mehr durchgeführt. Verwenden Sie das, wenn Sie das Scrollen komplett selbst steuern möchten.


Komponenten sichtbar scrollen

Sie können den Scroll-Mechanismus von QF-Test manuell über ein SUT-Skript auslösen:

node = rc.getComponent("myElement") // durch die QF-Test ID der Komponente ersetzen
// Boolean scrollPointVisible(int targetX, int targetY, boolean propagate)
node.scrollPointVisible(0, 0, true)

Dieser Code wird versuchen, das Element so zu scrollen, dass es sichtbar wird. Falls das Element nicht vollständig sichtbar gemacht werden kann, wird zumindest der angegebene Zielpunkt sichtbar gemacht.


Falls Ihnen der QF-Test Algorithmus aus irgendwelchen Gründen nicht weiterhelfen sollte, können Sie über ein kleines SUT-Skript auch direkt eine JavaScript-Funktion zum Scrollen aufrufen:

node = rc.getComponent("myElement") // durch die QF-Test ID der Komponente ersetzen
node.evalJS("_qf_node.scrollIntoView()") // beliebiges JavaScript

Eine feste Distanz scrollen

Was aber, wenn Sie noch mehr Kontrolle brauchen oder kein konkretes Ziel-Element haben?

Sie können auch einen beliebigen Scroll-Container um eine feste Menge scrollen – wieder per JavaScript.

Dieses SUT-Skript z.B. scrollt das Fenster um 25 Pixel nach unten:

node = rc.getComponent("genericDocument")
node.evalJS("window.scrollBy(0,25)")

Der erste Parameter der Methode scrollBy steuert die x-Achse – Sie können damit also auch seitwärts scrollen.


Das war’s! Jetzt wissen Sie alles, was Sie über Scrollen in Webanwendungen mit QF-Test wissen müssen, um auch in den kniffligsten Situationen klarzukommen.

Falls Sie trotzdem nicht weiterkommen, können Sie sich gerne an unser Support-Team wenden – wir helfen Ihnen gerne weiter!