50.5 Die Image-API

Die Image-API stellt Klassen und Interfaces bereit, um Bildschirmabbilder zu erstellen, Bilder in Dateien zu speichern oder zu aus Dateien zu laden. Es können auch eigene Bildvergleiche durchgeführt werden. Die Image-API ist so konzipiert, dass im Allgemeinen keine Exceptions geworfen werden. Um dennoch auf mögliche Fehler eingehen zu können, werden Warnungen geloggt.

50.5.1 Die ImageWrapper-Klasse

Um Bildschirmabbilder zu erstellen, können Sie die Jython-Klasse ImageWrapper aus dem Modul imagewrapper.py verwenden. Dieses Modul wird mit dem QF-Test Installationspaket mitgeliefert.

Hier sehen Sie ein kleines Jython Beispiel, um die Verwendung der Image-API darzustellen:

from imagewrapper import ImageWrapper

            #create ImageWrapper instance
            iw = ImageWrapper(rc)

            #take screenshot of the whole screen
            currentScreenshot = iw.grabScreenshot()

            #save screenshot to a file
            iw.savePng("/tmp/screenshot.png", currentScreenshot)
Beispiel 50.7:  Image-API in Jython

Das gleiche mit Groovy:

import de.qfs.ImageWrapper

            def iw = new ImageWrapper(rc)
            def currentScreenshot = iw.grabScreenshot()
            iw.savePng("/tmp/screenshot.png", currentScreenshot)
Beispiel 50.8:  Image-API in Groovy

Es folgt eine alphabetische Aufstellung aller Methoden der ImageWrapper Klasse. Die verwendete Syntax ist ein Gemisch aus Java und Python. Python unterstützt zwar selbst keine statische Typisierung, die Parameter werden jedoch an Java weitergereicht, so dass falsche Typen Exceptions auslösen können. Folgt einem Parameter ein '='-Zeichen und ein Wert, ist dies der Defaultwert des Parameters und eine Angabe beim Aufruf ist optional.

 
 
ImageWrapper ImageWrapper(RunContext rc)

Konstruktor der ImageWrapper Klasse.

Parameter
rc Der aktuell Runcontext von QF-Test.
 
int getMonitorCount()

Liefert die Anzahl aller Monitor zurück.

RückgabewertDie Anzahl der Monitore.
 
ImageRep grabImage(Object com, int x=None, int y=None, int width=None, int height=None)

Erstellt ein Bildschirmabbild einer spezifischen Komponente. Wenn die Parameter x, y, with und height gesetzt werden, dann wird ein Bildschirmabbild des beschriebenen Teilbereiches der Komponente erstellt.

Parameter
com Die QF-Test ID der Komponente.
x Die X-Koordinate der linken oberen Ecke des Teilbereiches.
y Die Y-Koordinate der linken oberen Ecke des Teilbereiches.
width Die Breite des Teilbereiches.
height Die Höhe des Teilbereiches.
RückgabewertEin ImageRep Objekt, welches das aktuelle Bildschirmabbild beinhaltet.
 
ImageRep grabScreenshot(int x=None, int y=None, int width=None, int height=None)

Erstellt ein Bildschirmabbild des gesamten Bildschirms. Wenn die Parameter x, y, with und height gesetzt werden, dann wird ein Bildschirmabbild des beschriebenen Teilbereiches erstellt.

Parameter
x Die X-Koordinate der linken oberen Ecke des Teilbereiches.
y Die Y-Koordinate der linken oberen Ecke des Teilbereiches.
width Die Breite des Teilbereiches.
height Die Höhe des Teilbereiches.
RückgabewertEin ImageRep Objekt, welches das aktuelle Bildschirmabbild beinhaltet.
 
ImageRep grabScreenshotOfAllScreens()

Erstellt ein kombiniertes Bildschirmabbild aller vorhandenen Monitore.

RückgabewertEin ImageRep-Objekt
 
ImageRep[] grabScreenshots(int monitor=None)

Erstellt Bildschirmabbilder aller vorhandenen Monitore. Diese Methode ist von Nutzen, wenn Sie mehr als einen Monitor verwenden.

Wenn Sie ein Bildschirmabbild eines speziellen Monitors machen wollen, dann können Sie das mit Hilfe des monitor Parameters.

Parameter
monitor Index des Monitors. Der Index für den ersten ist 0, der für den zweiten 1 etc.
RückgabewertEin Feld von ImageRep Objekten aller Bildschirmabbilder oder das spezielle ImageRep Objekt, wenn der monitor Parameter gesetzt wurde.
 
ImageRep loadPng(String filename)

Lädt ein Bild aus einer angegebenen Datei und liefert ein ImageRep Objekt zurück. Die Datei muss im PNG Format sein.

Parameter
filename Die Datei, in der das Bild gespeichert ist.
Rückgabewert Ein ImageRep Objekt, das das geladene Bild enthält.
 
void savePng(String filename, ImageRep image)

Speichert ein angegebenes ImageRep Objekt in eine Datei. Das Bild wird PNG formatiert.

Parameter
filename Der Pfad zu Zieldatei, wo das Bild gespeichert werden soll.
image Das abzuspeichernde ImageRep Objekt.