Handbuch

14
Testen von Webseiten

QF-Test bietet Support für verschiedene Browser und ist in der Lage, diese zu kontrollieren. Somit können Anwender ihre manuellen Interaktionen mit dem Browser aufzeichnen und diese anschließend im Browser wieder abspielen. Um den vollen Zugriff auf den Browser zu erlangen, verfolgt QF-Test 2 verschiedene Ansätze die im folgenden noch einmal kurz erläutert werden.

Hinweis Beide Ansätze sind notwendig und sie werden weiter nebeneinander existieren und voll unterstützt werden. Für die meisten Browser ist nur jeweils eine der beiden Methoden überhaupt möglich. Nur Chrome unter Windows und Firefox bis einschließlich Version 43 unter Linux und Windows können auf beiden Wegen angesprochen werden. QF-Test versucht, automatisch den richtigen Modus zu wählen. Sie können die Kontrolle darüber mit Hilfe des Attributs 'Verbindungsmodus für den Browser' im 'Web-Engine starten' Knoten übernehmen.

14.1
Testen mit Hilfe des QF-Driver Verbindungsmodus

Bei diesem Ansatz wird der auf dem Rechner des Anwenders installierte Browser in ein so genanntes Wrapper-Fenster eingebunden. Man spricht bei diesem Ansatz auch von Embedding. QF-Test bindet in dieses Fenster den lokal installierten Web-Browser nativ ein und erlangt somit Zugriff auf die Automatisierungs-Interfaces des jeweiligen Browsers. Über diese kann QF-Test dann die benötigten Events vom Browser abgreifen aber auch umgekehrt Events in den Browser einspeisen.

Die Einbettung des Browsers in ein separates Fenster funktioniert für neuere Browser leider nicht mehr zufriedenstellend bzw. im Fall von Microsoft Edge gar nicht. Aus diesem Grund wurde für QF-Test 4.1 ein alternativer Mechanismus implementiert, welcher im nächsten Abschnitt erläutert wird.

14.2
Testen mit Hilfe der WebDriver Anbindung

4.1+ Da der bestehende QF-Driver Ansatz zur Browser-Anbindung mit Hilfe von Embedding leider nicht von allen Browserherstellern weiter gepflegt bzw. überhaupt unterstützt wird, wurde für QF-Test 4.1 ein neuer Mechanismus implementiert, um auch zukünftige Browser und Browser-Versionen für die Tests verwenden zu können. Dieser Mechanismus verwendet als Bindeglied zwischen dem Browser und QF-Test den Selenium WebDriver.

Hinweis Der WebDriver Modus ist im Bezug auf Performance und Funktionsumfang (siehe Abschnitt 14.2.4) noch nicht ganz auf dem Stand von QF-Driver. Bei der Aufnahme kann es vorkommen, dass Event verloren gehen. Wir empfehlen bis auf Weiteres, für Aufnahme primär den QF-Driver Modus zu verwenden. Detaillierte Informationen zu den je nach Verbindungsmodus und Betriebssystem unterstützten Browsern finden Sie in den Systemvoraussetzungen in Abschnitt 1.1.

14.2.1
WebDriver allgemein

WebDriver entwickelt sich langsam zu einem W3C-Standard für die Steuerung von Web-Browsern. (http://www.w3.org/TR/webdriver). Er ist definiert als sogenanntes Remote-Control-Interface, das es erlaubt, die im Browser anzeigten Inhalte zu analysieren und den Browser zu steuern. WebDriver stellt hierfür ein plattform- und sprachunabhängiges Netzprotokoll zur Verfügung.

Die verschiedenen Browser-Hersteller haben sich auf diesen Quasi-Standard geeinigt, was dazu führt, dass die WebDriver-Integration direkt von den Browser-Herstellern mitentwickelt wird. Die Integration erfolgt teilweise über Plugins, bei manchen Herstellern ist die Integration bereits direkt mit in der Standard-Installation des Browsers enthalten.

QF-Test nutzt die WebDriver-Interfaces um mit dem Browser zu interagieren. Da der WebDriver-Ansatz nur teilweise zu den Konzepten von QF-Test passt, wurde die Web-Engine von QF-Test so erweitert, dass auch bei der Anbindung per WebDriver ein möglichst großer Funktionsumfang von QF-Test genutzt werden kann und dem Anwender die Mehrwert-Features von QF-Test wie z.B. Synchronisation, Abstraktion von Komponenten usw. wie gewohnt zur Verfügung stehen.

Zudem kann der QF-Test Ansatz bei Verwendung des WebDriver Modus mit bereits bestehenden Selenium Skripten kombiniert werden, die QF-Test direkt in einem 'SUT Skript' Knoten ausführen kann (vgl. Abschnitt 45.2).

Hinweis Bei der Verwendung des WebDriver Modus kann nun im 'Web-Engine starten' auch für andere Browser als Firefox explizit ein Browser-Installationsverzeichnis im Attribut 'Verzeichnis der Browser-Installation' angegeben werden. Wird im angegebenen Verzeichnis kein passender Browser gefunden, so wird eine Ausnahme ausgelöst. Ist kein Verzeichnis angegeben, so wird versucht, einen Standard-Browser des entsprechenden Typs zu starten.

Hinweis Um die bekannten QF-Test-Features wie Event- und Check-Aufnahme, merkmal-basierte Komponentenerkennung oder Web- bzw. Custom-Resolver auch im WebDriver-Modus verwenden zu können muss QF-Test die Inhalte des Browser-Fensters kontinuierlich analysieren und auf Änderungen überwachen. Dies kann in einigen Browsern eine Warnung hervorrufen, die sich auf Mixed-Mode-Darstellung bzw. die Verwendung eines unbekannten Zertifikats bezieht. Wenn diese Warnung bzw. Fehlermeldung nur während des Tests Ihrer Website mit QF-Test auftritt, so kann sie ignoriert werden.

14.2.2
WebDriver mit Microsoft Edge

Da Microsoft Edge nicht mit vorinstallierter WebDriver Unterstützung ausgeliefert wird, müssen Sie diese einmalig manuell installieren.

Auf neueren Systemen ist der Microsoft WebDriver ein "Feature on Demand". Zur Installation öffnen Sie die "Windows-Einstellungen > Apps > Apps & Features > Optionale Features verwalten" und fügen Sie den "Microsoft WebDriver" als neues Feature hinzu (Alternativ können Sie auch diesen Befehl als Administrator in einer Eingabeaufforderung ausführen: DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0). Auf älteren Systeme (bis Windows 10-1803) gehen Sie auf die Microsoft WebDriver Website, laden Sie sich die für Ihr Betriebssystem passende Version herunter und installieren Sie diese.

Darüber hinaus muss für den Edge Browser eine Loopback-Ausnahme definiert werden. Windows 10 nutzt eine Entkoppelungs-Technik, welche in einigen Fällen die Kommunikation zwischen Edge und QF-Test behindert. Obwohl dies nicht auf jedem System der Fall ist empfehlen wir, vor dem Test mit Edge die Loopback-Kommunikation ausdrücklich zu erlauben.

Um Loopback für Edge zu erlauben öffnen Sie als Administrator eine Kommandozeile und starten dort:

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

Um Loopback für Edge wieder zu deaktivieren öffnen Sie als Administrator eine Kommandozeile und starten dort:

CheckNetIsolation LoopbackExempt -d -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

Details zur Loopback-Kommunikation bei Windows Apps können im Windows Dev Center abgerufen werden.

Wenn die Installation erfolgreich war können Sie nun auch Microsoft Edge als Browser im Test verwenden.

14.2.3
WebDriver mit Safari

Zum Testen mit Safari gibt es zwei Möglichkeiten: Über den mit Safari ab Version 10 und macOS ab Version 10.11 mitgelieferten SafariDriver oder mit Hilfe einer Safari Erweiterung (Extension). Beide Methoden erfordern eine vorherige Einrichtung durch den Benutzer.

Um den Apple SafariDriver zu aktiveren, wählen Sie in den Safari-Einstellungen unter "Erweitert" den Punkt "Menü Entwickler in der Menüleiste anzeigen"". In diesem Menü aktivieren Sie dann den Menüpunkt "Entfernte Automation erlauben". Anschließend müssen Sie noch einmalig ein Terminal-Fenster öffnen und dort den Befehl /usr/bin/safaridriver -p 0 ausführen, um die anschließende Autorisierungs-Anfrage zu bestätigen.

Hinweis Aufgrund der speziellen Sicherheitseinstellungen, die Apple seinem SafariDriver auferlegt, gibt es bei Verwendung dieses Modus' folgende Einschränkungen:

  • Tests können nur abgespielt aber nicht aufgenommen werden
  • Harte Events sind nicht möglich
  • Es ist nur eine Browser-Instanz zugelassen

Für Safari bis Version 11 ist es möglich, Safari über die Selenium SafariDriver Erweiterung zu steuern. Selektieren Sie dafür QF-Test im Finder und wählen Sie aus dem Kontextmenü die Option "Paketinhalt zeigen". Navigieren Sie zum Ordner Contents/Resources, kopieren Sie die darin enthaltene Datei SafariDriver.safariextz an einen anderen Ort und öffnen Sie diese zum Installieren der Erweiterung. Deinstallieren Sie bitte zuvor eine evtl. vorhandene Version der Erweiterung.

14.2.4
Bekannte Einschränkungen des WebDriver Modus

Die WebDriver Anbindung an QF-Test befindet sich aktuell noch in der aktiven Entwicklung. Daher stehen leider einige Funktionen, die von der QF-Driver Anbindung bekannt sind, noch nicht zur Verfügung. In den meisten Fällen sind diese Einschränkungen dem Umfang der WebDriver Spezifikation zuzuschreiben.

  • Keine Unterstützung von Datei-Downloads und HTTP-Authentifizierung.
  • Keine Möglichkeit, HTTP-Requests direkt aufzuzeichnen bzw. abzuspielen.
  • wd.getComponent(WebElement) funktioniert bisher noch nicht bei Elementen in verschachtelten Frames.
  • Events, die zum Laden einer neuen Webseite führen, werden teilweise nicht richtig aufgezeichnet.
  • Event-Synchronisierung ist teilweise verzögert.
14.3
Web-Testen ohne sichtbares Fenster

4.2+ Mit Hilfe des WebDriver-Verbindungsmodus ist es möglich, Firefox und Chrome im sogenannten "Headless"-Modus anzusteuern. Dabei wird der Browser im Hintergrund gestartet, aber ohne dabei ein sichtbares Fenster auf dem Bildschirm anzuzeigen. Alle Interaktionen mit der Webseite erfolgen im "unsichtbaren" Fenster.

Um einen bestehenden Web-Test im "Headless"-Modus auszuführen muss lediglich der Typ des Browsers im 'Web-Engine starten'-Knoten von chrome auf headless-chrome bzw. von firefox auf headless-firefox geändert werden. Dabei ist zu beachten, dass der "Headless"-Modus erst ab Chrome 60 und Firefox 57 unterstützt wird.