Grafische Elemente in GUI-Technologien

Aus expecco Wiki (Version 2.x)
Zur Navigation springen Zur Suche springen

Deutsche Version | English Version

Einleitung[Bearbeiten]

Die GUI-Technologien liefern üblicherweise Informationen über vorhandene Elemente in der jeweiligen Anwendung. Über einen Locator (üblicherweise ein XPath) kann dann an einem Baustein angegeben werden, für welches Element eine bestimmte Aktion ausgeführt werden soll. In manchen Fällen kann es aber schwierig bis unmöglich sein, solch einen geeigneten Pfad anzugeben. Entweder weil die Struktur nicht statisch ist, es keine geeigneten Eigenschaften gibt das Element zu identifizieren, oder weil ein Element über die Technologie gar nicht sichtbar ist, sondern nur sein umgebendes Element.

Über die Verwendung eines Drehbuchs (Screenplay) ist es möglich, Elemente zu definieren, die über den Screenshot gefunden werden. Das Prinzip ist das gleiche wie bei der Automatisierung auf dem lokalen Bildschirm oder über einen VNC-Server, kann aber parallel mit der normalen Adressierung verwendet werden.

Bisher unterstützen folgende Technologien ein zusätzliches Screenplay: Web Test (Selenium), Mobile Testing (Appium), WindowsAutomation 2 und Java.

Drehbuch definieren[Bearbeiten]

Am einfachsten lassen sich Drehbücher im GUI-Browser anlegen. Bauen Sie zunächst die Verbindung auf, die Sie verwenden wollen. Im Kontextmenü der Applikation gibt es den Eintrag Drehbuch und darunter verschiedenen Option, unter anderem, ein neues Drehbuch anzulegen. Die Elemente werden im Drehbuch in Szenen unterteilt. Diese können zur Strukturierung verwendet werden, es ist aber auch möglich, nur eine Szene zu verwenden. Das Drehbuch wird als Anhang ins aktuelle Projekt gespeichert, ebenso alle Bilddateien, die zur Definition der Elemente verwendet werden.

Drehbuch verwenden[Bearbeiten]

Um ein Drehbuch in einem Test zu verwenden, muss es zu Beginn geladen werden. In manchen Technologie-Bibliotheken gibt es dafür einen Baustein, in der Common GUI Library, die in jedem Fall verwendet werden kann, heißt er zum Beispiel [UI] Set Screenplay. Ziehen Sie dafür das Attachment des Drehbuchs in Ihren Baustein und setzen Sie das Datenformat am Ausgang auf Inhalt als String, um den Pin mit dem Screenplay-Baustein verbinden zu können. Die definierten Elemente können mit den Bausteinen der Technologie-Bibliotheken oder der Common GUI Library verwendet werden, möglicherweise funktionieren aber nicht alle Aktionen.

Elemente[Bearbeiten]

Es gibt verschiedene Arten von Elementen oder Playern, die im Drehbuch definiert werden können. Im GUI-Browser können Sie ein neues Element anlegen, indem Sie das Drehbuch oder eine Szene auswählen und im Kontextmenü Neues Element definieren ("Player" in der Szene) auswählen und darunter den Typ des Elements.

Grafische Elemente[Bearbeiten]

Grafische Elemente sind alle Elemente, die über den Screenshot erkannt werden. Die Elemente, die so gefunden werden sind unabhängig von der Technologie. Mit ihnen können nur grundlegende Aktionen ausgeführt werden, wie Klicken oder den Text auslesen (über OCR). Auch wenn diese Aktionen trotzdem über die jeweilige Technologie ausgeführt werden, sind mit diesen Elementen keine Aktionen möglich, die ein echtes Technologie-Element benötigen (z.B. Attribut-Werte auslesen). Es gibt verschiedene Möglichkeiten, ein solches Element zu definieren.

Position[Bearbeiten]

Die einfachste Möglichkeit ist es, einfach eine Position anzugeben. Hierfür muss noch nicht einmal der Screenshot durchsucht werden, trotzdem handelt es sich hierbei um ein grafisches Element, da die möglichen Aktionen mit einem solchen Element dieselben sind.

MenuBoundsLocator.png Rechteck Definieren Sie das Rechteck, an dem sich das Element befindet indem Sie einen entsprechenden Rahmen im Vorschaufenster ziehen. Die Position wird relativ zur oberen linken Ecke des Screenshots angenommen.

Bild suchen[Bearbeiten]

Elemente können mit einem oder mehreren Bilder definiert werden, die dann im aktuellen Screenshot gesucht werden. Hiervon gibt es verschiedene Unterkategorien. Das Element kann direkt durch das Bild definiert sein oder eine Position relativ zum Bild haben. Es ist außerdem möglich, einen Bereich zu definieren, der von zwei Bildern aufgespannt wird.

MenuBitmapLocator.png Bereich unter Bild Definieren Sie ein Bild, indem Sie einen entsprechenden Rahmen in der Vorschau ziehen. Sie können den Ausschnitt danach noch zuschneiden. Das definierte Element befindet sich dann an der Stelle, an der das Bild gefunden wird.
MenuAutoBitmapLocator.png Bereich an Klickposition (Auto) Gleich wie die vorige Option, nur dass Sie zur Definition lediglich an die Stelle für das Element klicken müssen und danach den Bildbereich bei Bedarf anpassen können. expecco versucht einen sinnvollen Bildbereich auszuwählen, in jedem Fall ist bereits er eindeutig ist.
MenuBitmapRelativeBoundsLocator.png Am Bild verankerter Bereich In diesem Fall befindet sich das Element nicht an der Stelle, an der das zugehörige Bild gefunden wird, sondern an einer Position relativ dazu. Zur Definition zeihen Sie einen Rahmen in der Vorschau, wo sich das Element befinden soll und definieren anschließend in gleicher Weise das Bild, das als Anker verwendet werden soll.
MenuHorizontalBetweenLocator.png Bereich zwischen Bildern Links..Rechts Das Element wird begrenzt durch zwei Bilder, die sich rechts und links davon befinden. Zur Definition ziehen Sie in der Vorschau einen Rahmen um den gesamten Bereich des Elements und der Bilder. Danach können Sie die Auswahl auf das linke und das rechte Bild zuschneiden.
MenuVerticalBetweenLocator.png Bereich zwischen Bildern Oben..Unten Das Element wird begrenzt durch zwei Bilder, die sich oberhalb und unterhalb davon befinden. Zur Definition ziehen Sie in der Vorschau einen Rahmen um den gesamten Bereich des Elements und der Bilder. Danach können Sie die Auswahl auf das obere und das untere Bild zuschneiden.
MenuDiagonalBetweenLocator.png Bereich zwischen Bildern ObenLinks..UntenRechts Ähnlich die beiden vorigen Optionen, nur dass die beiden Bilder nicht die gesamte Höhe bzw. Breite des Elements einnehmen müssen.
MenuBetweenTwoLocator.png Durch zwei Bilder definierter Bereich Im Unterschied zur vorherigen Option sind die Bilder nicht Teil des Elements, sondern dienen als Anker für die obere linke bzw. untere rechte Ecke.

Text suchen[Bearbeiten]

Wenn die OCR-Unterstützung in expecco konfiguriert ist, kann auch nach Text innerhalb des Bildes gesucht werden. Hier ist zu beachten, dass der Erfolg natürlich vom OCR-Ergebnis abhängt. Dabei ist hoher Kontrast in der Regel von Vorteil, dunkle Schrift auf hellem Grund wird meist besser erkannt als umgekehrt. Icons oder andere grafische können als Zeichen erkannt werden, was zu Problemen führen kann, wenn ein Wort direkt daneben gesucht wird.

MenuTextLocator.png Bereich unter Text Geben Sie einen Text an, nach dem im Screenshot gesucht werden soll. Das Element befindet sich dann in dem Bereich, in dem dieser Text gefunden wird.

XPath-Elemente[Bearbeiten]

Im Drehbuch können auch Elemente mit XPath definiert werden. Dadurch kann einem Pfad quasi ein Name zugewiesen werden. Dies trägt zum einen zur besseren Lesbarkeit des Tests bei, zum anderen können Pfade so einfacher ausgetauscht werden. Elemente, die so gefunden werden, sind genauso echte Technologie-Elemente wie wenn man den Pfad direkt am Baustein verwendet, das heißt mit ihnen können alle Aktionen ausgeführt werden, die für die Technologie möglich sind.

Schreibweise[Bearbeiten]

Um ein Element aus dem Drehbuch an einem Baustein zu verwenden, wird das @-Zeichen verwendet, um eine Element-ID zu kennzeichnen. Zum Beispiel @OkButton. Bei der Verwendung eines Screenplays mit VNC oder auf dem lokalen Bildschirm gibt es daneben noch andere Schreibweisen, die bei den anderen GUI-Technologien nicht zulässig sind, da man hier unterscheiden können muss, ob es sich um einen XPath oder um ein Screenplay-Element handelt. Eine Element-ID darf die Zeichen '@', '$' und '/' nicht enthalten.

Es ist auch möglich, mehrere Elemente in einem Pfad zu kombinieren. Dabei wird der Pfad von links nach rechts abgearbeitet und jeweils nur innerhalb des definierten Bereichs weitergesucht. Die einzelnen Teile werden dabei durch "/" getrennt. Zum Beispiel @linkeSeite/@OkButton. Es dürfen XPath der Technologie mit den Element-IDs kombiniert werden, allerdings ist hierbei zu beachten, dass keine Element-ID für ein grafisches Element links von einem XPath stehen kann.



Copyright © 2014-2024 eXept Software AG