Selenium WebDriver Plugin

From expecco Wiki (Version 2.x)
Revision as of 11:53, 12 March 2019 by Matilk (Talk | contribs)

Jump to: navigation, search

Achtung

Das Webtest Selenium WebDriver Plugin ersetzt das bisherige Selenium Web Test Plugin. Zur Automatisierung wird Selenium WebDriver verwendet (Driver für gängige Browser werden von uns mitgeliefert), der das bisher verwendete Selenium RC ersetzt. Dies wurde u.a. notwendig, da die SeleniumRC Schnittstelle von neuen Browsern nicht mehr unterstützt wird. Hinweise zur Migration älterer Testsuiten finden Sie unten.

Einleitung

Mit dem Selenium WebDriver Plugin können Sie Tests von Webapplikationen erstellen oder auch diese automatisieren. Das Plugin kann (und wird üblicherweise) zusammen mit dem GUI-Browser verwendet werden, der das Erstellen von Tests oder automatisierten Browseraktionen unterstützt. Zudem ist damit das Aufzeichnen von Abläufen möglich.

Browser-Unterstützung

Das Plugin unterstützt die Browser Chrome/Chromium, Edge, Firefox, Internet Explorer und Opera.
Safari unter OSX muss zumindest in der Version 10 vorliegen und OSX muss mindestens die El Capitan Version sein. Da inzwischen eine Vielzahl von weiteren Browsen, Geräten und graphischen Oberflächen eine WebDriver Schnittstelle anbieten, können auch diese - z.T. mit eingeschränktem Funktionsumfang - über diese automatisiert werden. So gibt es z.B. auch Schnittstellen für Windows Mobilgeräte oder Desktopanwendungen.

Für jeden Browsertyp gibt es einen Driver, über den das Starten und Ansteuern der Browserfenster funktioniert. Diese müssen möglicherweise aktualisiert werden, wenn sich die Browser-Version ändert. Für die wichtigsten Browser finden sich im Lieferumfang die Driver in Ihrem expecco-Installationsverzeichnis unter:

packages/exept/expecco/plugin/seleniumWebDriver/lib

(unter Microsoft Windows Betriebssystemen mit "\” anstatt "/")

In manchen Fällen warnt expecco, dass eine Driver-Version möglicherweise nicht zum Browser passt. Das bedeutet, dass diese Driver-Browser Kombination von eXept nicht getestet wurde, sie wird in den meisten Fällen trotzdem funktioneren. Falls eine solche Warnung erscheint, können sie den "Diese Warnung nicht mehr anzeigen"-Schalter umlegen; damit wird diese Driver-Browser Versionskombination in ihren Settings als "vertrauenswürdig" vermerkt, und in Zukunft nicht mehr gemeldet.

Neuere Versionen der Driver bekommen Sie an folgenden Adressen:

Chrome/Chromium ChromeDriver
Edge Microsoft WebDriver
Firefox GeckoDriver
Internet Explorer IEDriverServer
Opera OperaDriver

Bulb.pngBitte verifizieren Sie, daß die Version des Drivers kompatibel ist mit der des Browsers. Im Zweifel suchen Sie nach der Versionshistorie (z.B. für Chrome: https://chromedriver.storage.googleapis.com/2.25/notes.txt).

Bulb.pngFür den Internet Explorer ist zu beachten, dass der geschütze Modus für alle Zonen gleich eingestellt sein muss, damit eine Verbindung möglich ist. (im Internet Explorer: "Einstellungen" - "Internetoptionen" - "Sicherheit" öffnen, und bei allen 4 Zonen "geschützter" Bereich gleich einstellen; ansonsten kommen beim Verbindungsaufbau Fehler- und Warndialoge). Siehe außerdem die erforderliche Konfiguration zur Verwendung des InternetExplorerDrivers.

Bulb.pngDas Plugin verwendet für einige Funktionen JavaScript. Stellen Sie daher sicher, dass die Ausführung von JavaScript im verwendeten Browser erlaubt ist, insbesondere wenn Sie den GUI-Browser oder den Recorder verwenden wollen. Die Ausführung eines Tests ist auch ohne JavaScript möglich, solange keine Bausteine verwendet werden, welche JavaScript ausführen.
Sollten Sie einen Fehler der Art "org.openqa.selenium.JavascriptException: Error executing JavaScript" bekommen, stellen Sie sicher, dass die Ausführung von JavaScript im verwendeten Browser erlaubt ist und Browser- und zugehörige WebDriver-Version kompatibel sind.

Headless Browser

Mit "Headless" bezeichnet man eine Anwendung, welche ohne Bedienoberfläche abläuft. Einige der Browser unterstützen einen "headless" Modus, bei dem kein Browserfenster angezeigt wird. Der Browser operiert dabei in einem "unsichtbaren Fenster" führt aber alle Operationen aus, und liefert auch die selbe Elementhierarchie. Bei einigen Browsern sind allerdings die Screenshot (Bild vom Fenster bzw. von Elementen) eingeschränkt bzw. gar nicht verfügbar.
Den "headless" Modus können Sie beim Verbindungsaufbau in den "Advanced Settings" angeben.

HTML Unit Browser

Bei diesem "Pseudobrowser" handelt es sich um eine weitere "headless" Variante, welche ganz ohne Renderengine operiert, und lediglich die Elementhierarchie sowie Javascript unterstützt. Sein Verhalten kann stark von dem "echter" Browser abweichen.

Diesen Browsertyp können Sie verwenden, wenn ihr Test das Verhalten des Webservices (also der Servierseite) betrifft, und nicht das Verhalten der Anwendung im Browser (End-User-Experience) im Fokus hat. Zum Beispiel kann der "HTML Unit Browser" zum Generieren von Last oder gleichzeitigen Aktionen gegenüber dem Server dienen. Da sich dieser Browser im Verhalten z.T. stark von dem echter Browser unterscheidet sollte er nur (wenn überhaupt) in besonderen Fällen verwendet werden.

Schneller Einstieg

Browser öffnen / verbinden

  • Starten Sie expecco
  • Klicken Sie auf "Neue Testsuite"
  • Klicken Sie auf das GUI-Browser Symbol (GUIBrowser.png)
  • Es erscheint der GUI-Browser in einem neuen Reiter
  • Klicken Sie auf "Verbinden" und wählen Sie "Webtest (Selenium WebDriver)" aus dann erscheint der Verbindungsdialog (Details siehe unten)
  • Im Verbindungsdialog geben Sie die zu testende Webseite ein (z.B. "http://www.myHost.com") und wählen den Browsertyp (z.B. "chrome" oder "firefox") aus
  • Klicken Sie auf "Verbinden"
  • Ein Browser wird nun automatisch gestartet, und die Seite angezeigt.
  • Sobald die Verbindung steht, wird im GUIBrowser die Seitenstruktur als Baum angezeigt, und im rechten Diagramm-Fenster erscheint ein passender Verbindungsbaustein (siehe unten).

Recording aufnehmen

  • Klicken Sie auf das Recording Symbol im GUI-Browser.

Recording Start.png

  • Ein Recorderfenster erscheint (eine Beschreibung der Bedienelemente finden Sie unten)
  • Sie zeichnen nun direkt im Rekorder auf.
  • Klicks werden je nach Einstellung als Klick, Mausbewegung, Drag&Drop etc. aufgezeichnet.
    Während der Aufzeichnung können Sie zwischen diesen Werkzeugen wechseln:

Recorder Werkzeuge.png

  • die aufgezeichneten Aktionen werden im Tab "Aufgezeichnete Sequenz" dargestellt. Sie können dort noch bearbeitet werden.
  • Zum Beenden der Aufzeichnung klicken Sie entweder auf den "Stop Recording" Knopf im GUI Browser, oder schließen das Rekorderzenster. Es ist auch möglich, das Aufzeichnen temporär zu Pausieren, indem sie im Rekorder auf den "Aufnahme"-Knopf oben links drücken.
  • Nach dem Aufzeichnen können sie die Sequenz un ihre Testsuite als Testfall oder Teilsequenz übernehmen.

Aufgezeichnete Aktion wiedergeben

  • Im Reiter "Aufgezeichnete Sequenz" kann die aktuelle Aufzeichnung sofort wiedergegeben werden ("Play"-Knopf drücken)
    Beachten Sie, daß ihre Webseite üblicherweise im gleichen Zustand sein sollte - gegebenenfalls sollten Sie also den "Back"-Knopf oder eine andere Navigation anwenden, um dies sicher zu stellen.
  • Die Sequenz kann bearbeitet werden. Dazu können entweder weitere Aktionen aufgenommen werden, oder zusätzliche Aktionen entweder via Drag&Drop oder über das Kontextmenü (bzw. <key<CTRL-N</key>) angelegt werden. Häufig werden zusätzliche Delay- oder Verifikations-Bausteine benötigt, die sie hiermit an geeigneter Stelle einfügen können.

Verbindungsaufbau

Verbindungseditor

Mit dem Verbindungseditor werden Verbindungen definiert, geändert und aufgebaut. Sie erreichen ihn, indem Sie den GUI-Browser öffnen und dort auf "Verbinden" klicken und dann "Selenium Testing (WebDriver)" auswählen.

SeleniumWebDriverConnectDialog.png

  1. Einstellungen aus Anhang laden: Öffnet einen Anhang im expecco Projekt mit Verbindungseinstellunge. Diese Einstellungen werden in den Editor übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.
  2. Einstellungen aus Datei: Öffnet eine gespeicherte Einstellungsdatei (*.csf). Diese Einstellungen werden in den Editor übernommen. Bereits getätigte Eingaben ohne Konflikt bleiben dabei erhalten.
  3. Einstellungen in Anhang speichern: Hier können Sie die eingetragenen Einstellungen als Anhang im expecco-Projekt anlegen.
  4. Einstellungen in JSON-Anhang speichern: Hier können Sie die eingetragenen Einstellungen im JSON-Format als Anhang im expecco-Projekt anlegen.
  5. Einstellungen in Datei speichern: Hier können Sie die eingetragenen Einstellungen in eine Datei (*.csf) speichern.
  6. Versionsinfo: Zeigt ein Fenster mit den verwendeten Versionen des Selenium-Servers, des ausgewählten Browser und dessen Driver an.
  7. Online-Dokumentation: Öffnet diese Online-Dokumentation.
  8. Verbindungsname: Tragen Sie hier den Namen ein, unter dem die Verbindung im GUI-Browser angezeigt werden soll. (Optional)
  9. Browsertyp: Wählen Sie hier aus, welchen Browser Sie verwenden möchten. Stellen Sie sicher, dass dieser installiert ist und die Version des verwendeten Drivers zur Browserversion passt.
  10. URL: Tragen Sie hier die URL ein, die zu Beginn aufgerufen werden soll. Sie können das Feld auch frei lassen, dann wird ein leeres Browser-Fenster geöffnet. Um eine lokale Datei zu öffnen, verwenden Sie das Schema "file://", z.B. "file:///C:/Users/admin/Desktop/index.html".
  11. Erweiterte Ansicht: Wechselt zur Ansicht für die Eingabe von erweiterten Einstellungen.
  12. Informationen zum gewählten Browser: Hier wird der ausgewählte Browsertyp kurz vorgestellt.
  13. Informationen zu den Einstellungen: Hier wird angezeigt, welche Selenium-, Browser- und Driver-Version mit den aktuellen Einstellungen verwendet wird. Falls Sie erweiterten Einstellungen gesetzt haben, werden diese hier ebenfalls aufgelistet.

Erweiterte Einstellungen

Neben dem zu verwendenden Browser und der Start-URL kann man noch weitere Einstellungen für eine Verbindung vornehmen. Wechseln Sie dazu im Verbindungsmenü die Ansicht über den entsprechenden Menü-Eintrag. Je nachdem, welchen Browsertypen Sie ausgewählt haben, bekommen Sie andere Eingabefelder.

  • Remote Server: Falls der Browser auf einem anderen Rechner gestartet werden soll, als Ihr Test läuft, starten Sie dort einen Selenium-Server und geben Sie dessen Adresse in diesem Feld an. Natürlich können Sie auch eine lokale Adresse angeben, wenn nicht automatisch ein Selenium-Server gestartet werden soll. Wie Sie einen Selenium-Server starten lesen Sie im nächsten Abschnitt Remote-Verbindungen.
  • Binary: Geben Sie den Pfad zum Binary des ausgewählten Browsers an, wenn dieser nicht automatisch von Selenium gefunden wird oder Sie eine weitere Version installiert haben.
  • Driver: Zu jedem Browser wird ein spezieller Driver zur Automatisierung benötigt. Für neue Versionen des Browsers braucht man häufig auch eine neue Version des entsprechenden Drivers. Wenn Sie nicht den von expecco installierten Driver verwenden wollen, geben Sie hier einen entsprechenden Pfad an.
  • Firefox Profile: Für Firefox gibt es zusätzlich die Möglichkeit, ein Profil bzw. Template anzugeben, das spezifische Einstellungen enthält. Wenn keines angegeben wird, wird für jede Verbindung ein neues, leeres Profil angelegt.
  • Capabilities: Für Selenium-Verbindungen sind einige Capabilities definiert, mit denen sich Verbindungs-Eigenschaften oder auch das Browserverhalten festlegen lassen. Solche Capabilities können Sie sie in diesem Feld angeben. Schreiben Sie dazu <capability name>: <value> oder <capability name> = <value>; jeweils ein Eintrag pro Zeile. Außerdem können Sie hier auch Eigenschaften für den Firefox-Browser setzen. Die Eingabe hierfür erfolgt wie für die Capabilities, nur dass sie dem Namen der Eigenschaft ein $ voranstellen müssen.

Lokale-Verbindungen

Um einen Browser auf ihrer lokalen Maschine zu starten, werden lediglich die Felder "URL" sowie "Browsertyp" benötigt. Als Voreinstellung für den Browser wird "chrome" erscheinen.

Remote-Verbindungen

Um einen Browser auf einem entfernten Rechner zu starten, müssen Sie zunächst den Selenium-Server und die benötigten Driver auf diesen Rechner kopieren. Auf dem Zielrechner muss Java installiert sein. Sie finden die Dateien in Ihrer expecco-Installation unter "packages/exept/expecco/plugin/seleniumWebDriver/lib". Starten Sie dann den Selenium-Sever (auf dem entfernten Rechner) mit:

java -jar selenium-server-standalone-3.6.0.jar

Standardmäßig wird der Server dann auf dem Port 4444 Verbindungen annehmen. Wenn Sie einen anderen Port verwenden wollen, können Sie diesen auf der Kommandozeile mit "-port <nr>" angeben. Um von expecco eine Verbindung über diesen Server herzustellen, geben Sie beim Verbindungsaufbau als Remote-Server

<Server-Adresse>:4444/wd/hub

an.

Das Starten des Selenium-Servers bzw. die Verbindung muss eventuell von der Firewall zugelassen werden.

Verbindungsbausteine

Der Verbindungsaufbau, welcher im GUI Browser interaktiv erfolgt, muss natürlich bei einem automatisierten Ablauf über einen Aktionsbaustein erfolgen. Dazu gibt es in der SeleniumWebDriverLibrary im Ordner "Connection" verschiedene Bausteine, welche die Verbindungsparameter von verschiedenen Quellen erhalten:

  • Connect
    Dieser Baustein erhält die Verbindungsparameter über Eingangspins
  • Connect from File
    Hier werden die Einstellungen aus einer Datei (Anhang) gelesen (typischerweise im JSON Format)
  • Connect from Spec
    Die Verbindungsparameter werden in einem Dictionaryobjekt geliefert
  • Reuse or Start Connection
    Im Gegensatz zu obigen Bausteinen, welche immer eine neue Browserverbindung aufbauen (i.e. ein neues Browserfenster öffnen), wird dieser Baustein zunächst prüfen, ob bereits eine Verbindung besteht, und diese gegebenenfalls wiederverwenden. Dieser Baustein kann daher mehrfach (i.e. zu Beginn von Teilsequenzen) platziert werden, und damit die Teilsequenzen sowohl innerhalb eines komplexeren Gesamttests als auch "stand-alone", d.h. einzeln ausgeführt werden.

Alle "Connect" Bausteine benötigen die Angabe eines "Verbindungsnamens". Dieser hat die Aufgabe, die Verbindung im weiteren Testverlauf zu identifizieren, wenn zwischen mehreren Verbindungen gewechselt wird, und zum Abbauen der Verbindung.

Wenn Sie im GUI Browser im Elementbaum auf eine Verbindung klicken, erscheint in der rechten "Test" Kachel ein Connect Baustein mit entsprechend vorgelegten Parametern. Diesen können Sie bei Bedarf gleich in die Rekordersequenz übertragen.

Verbindungen mit komplexen Einstellungen werden typischerweise im Verbindungsdialog angelegt, und die Einstellungen von dort über die Menüfunktion "Sichern in Anhang/Datei" in einer Datei gesichert. So können Sie verschiedene Konfigurationen in einzelnen Dateianhängen in ihrer Testsuite oder auch außerhalb aufbewaren. Zum Verbinden verwenden Sie dann den Aktionsbaustein "[Connect From File]".

Plugin-Einstellungen

Wenn Sie eine bestimmte Browser-Installationen oder Driver standardmäßig als Voreinstellung verwenden möchten, können Sie diese in den Einstellungen des Plugins eintragen. Sie finden sie über das Menü unter dem Punkt "Extras" -> "Einstellungen" und dort unter "Erweiterungen" -> "Webtest (Selenium WebDriver)". Die dortigen Einstellungen gelten als Voreinstellung für jede Verbindung, es sei denn in einer konkreten Verbindungseinstellungen ist etwas anderes angegeben.

Recorder

Die folgende Beschreibung des Recorders gilt prinzipiell für alle von expecco unterstützten GUI Technologien. Verhalten und Bedienung sind bis auf kleine technologiebedingte Unterschiede für alle gleich.

Besteht im GUI-Browser eine Verbindung mit einem Browserfenster, kann der integrierte Recorder verwendet werden, um einen Testabschnitt aufzunehmen. Sie starten den Recorder, indem Sie im GUI-Browser die entsprechende Verbindung auswählen und dann auf den Aufnahme-Knopf klicken. Für den Recorder öffnet sich ein neues Fenster. Für jeden Klick im Fenster wird eine Aktion aufgezeichnet. Weitere Aktionen stehen über das Menü zur Verfügung. Die aufgezeichneten Aktionen werden im Arbeitsbereich des GUI-Browsers angelegt. Daher ist es möglich, das Aufgenommene parallel zu editieren.

SeleniumWebDriverRecorder.png

Komponenten des Recorderfensters

  1. Aufnahme Pausieren: Wenn die Kontrollleuchte rot ist, nimmt der Recorder auf. Durch Klicken können Sie die Aufnahme anhalten. Die Kontrolleuchte leuchtet dann grau. In diesem Zustand können Sie weiter Aktionen über das Recorder-Fenster ausführen, sie werden aber nicht aufgezeichnet. Klicken Sie erneut, um die Aufnahme weiterzuführen.
  2. Aktualisieren: Holt das aktuelle Bild und den aktuellen Elementbaum vom Browser. Dies wird nötig, wenn die Anzeige des Recorders nicht mit dem tatsächlichen Browserinhalt übereinstimmt.
  3. Follow-Mouse: Das Element unter dem Mauszeiger wird im GUI-Browser ausgewählt.
  4. Element-Highlighting: Das Elements unter dem Mauszeiger wird rot umrandet.
  5. Element-Werkzeuge: Auswahl, mit welchem Werkzeug aufgenommen werden soll. Es stehen alle Aktionen zur Verfügung, die auf ein bestimmtes Element ausgeführt werden. Die gewählte Aktion wird bei einem Klick auf die Anzeige ausgelöst und das Element aus der Position bestimmt. Die nicht ausgewählten Aktionen sind jederzeit über einen Rechtsklick erreichbar.
  6. Browser-Werkzeuge: Aktionen die sich nicht auf bestimmte Elemente beziehen, wie Scrollen oder Aktionen auf die aktuelle URL oder den Titel, können hier ausgelöst werden.
  7. Seitennavigation: Aktionen zur Seitennavigation: eine Seite zurück, eine Seite vor und aktuelle Seite neu laden
  8. Alert-Behandlung: Wenn der Browser einen Alert anzeigt, klicken Sie auf diesen Button, um die Aktionen zur Alert-Behandlung auswählen zu können.
  9. Online Dokumentation: Öffnet diese Online-Dokumentation.
  10. Anzeige: Zeigt einen Screenshot des Browsers. Aktionen werden mit der Maus je nach Werkzeug ausgelöst. Wenn eine neue Aktion eingegeben werden kann, hat das Fenster einen grünen Rahmen, sonst ist er rot. Scrollen wird den Browser weitergeleitet, aber nicht aufgenommen.
  11. Fenster an Bild anpassen: Ändert die Größe des Fensters so, dass der Screenshot vollständig angezeigt werden kann.
  12. Bild an Fenster anpassen: Skaliert den Screenshot auf eine Größe, mit der er die volle Größe des Fensters ausnutzt.
  13. Skalierung: Ändert die Skalierung des Screenshots. Diese kann auch über Scrollen in der Anzeige bei gedrückt gehaltener Strg-Taste angepasst werden.
  14. Meldungen: Hier werden Meldungen angezeigt, bspw. wenn eine Aktion nicht aufgenommen werden konnte. Die letzte Meldung wird solange angezeigt, bis sie über den Button rechts daneben geschlossen wird.

Portierung alter Selenium-Tests

Dieses Plugin ersetzt das bisherige Selenium Web Test Plugin. Dieses basierte auf Selenium RC, welches in Zukunft nicht mehr unterstützt wird. Der Nachfolger von Selenium RC ist Selenium WebDriver, auch Selenium 2 genannt. Ebenso ist auch das Aufzeichnen von Tests mit Selenim IDE veraltet, da das Plugin von neueren Browsern nicht mehr unterstützt wird. Das Selenium WebDriver Plugin verwendet stattdessen einen eigenen Recorder.

Tests, die mit dem alten Selenium Web Test Plugin erstellt wurden und die SeleniumLibrary verwenden, können über Selenium WebDriver ausgeführt werden. Setzen Sie dazu in den Plugin-Einstellungen von "Webtest Legacy (Selenium)" den Haken bei "WebDriver für die Ausführung verwenden". Testen Sie dann, ob die Tests wie bisher ablaufen. Für den überwiegenden Teil der Bausteine sollte es dabei keine Probleme geben. Einige wenige Aktionen werden in der WebDriver Version nicht mehr unterstützt oder verhalten sich unterschiedlich. Es ist auch nicht garantiert, daß die Emulation der alten Schnittstelle auf Dauer von Selenium unterstützt werden. Wenn möglich sollten Sie daher über kurz oder lang die Testfälle umschreiben.

FAQ

  • Scrollbalken lassen sich im Recorder nicht bedienen
Der Scrollbalken des Browsers, der automatisch angezeigt wird, wenn eine Seite größer als das Browserfenster ist, ist kein bedienbares Webelement. Scrollen um einen bestimmten Betrag ist in einem Test selten sinnvoll, wenn die Größe des Browserfensters nicht festgelegt ist. Verwenden Sie stattdessen den Baustein [WebElement] Scroll Element into View, um ein entsprechendes Element in den sichtbaren Bereich zu scrollen. Der Klick-Baustein, den der Recorder standardmäßig verwendet, führt diese Aktion bereits automatisch mit aus ([WebElement] Click (Scroll Element into View)). Wenn Sie im Recorder-Fenster scrollen, wird dies automatisch auf den Browser übertragen, aber nicht aufgezeichnet. Falls Sie tatsächlich um einen bestimmten Betrag scrollen möchten, gibt es bei den Browser-Aktionen einen Eintrag dafür und noch weitere Bausteine in der SeleniumWebDriverLibrary.


Copyright © 2014-2018 eXept Software AG