zurück
Avatar of Yann Spöri
Autor: Yann Spöri
29. Juli 2021

Bildschirmabbilder/Screenshots erstellen mit QF-Test

Es ist relativ einfach mithilfe von QF-Test ein Bildschirmabbild des kompletten zu erstellen. Um z.B. ein Bildschirmabbild des aktuellen Desktops zu erstellen, muss lediglich die Prozedur logScreenshot aufgerufen werden. (Folgender Blogartikel erklärt, wie man Prozeduraufrufe einfügt.)

Hierbei sollte beachtet werden, dass Bildschirmabbilder viel Speicherplatz verbrauchen können. Insofern sollte nicht unbedingt nach jedem Schritt ein Bildschirmabbild erstellt werden - auch wenn dies relativ einfach möglich ist. (Mithilfe eines TestrunListeners ist es auch möglich dies automatisiert zu tun, ohne dass ein Anwender die komplette Suite überarbeiten muss / nach jedem Schritt einen Prozeduraufruf einzufügen muss.)

In der Praxis sieht das Ganze so aus:

Nach der Ausführung findet man das Bildschirmabbild in dem entsprechenden Protokoll.

Es ist auch möglich das Bildschirmabbild auf der Festplatte abzuspeichern. Hier hilft ein Jython Server/SUT Script mit folgendem Inhalt:

from imagewrapper import ImageWrapper
iw = ImageWrapper(rc)
screenshot = iw.grabScreenshot()
iw.savePng(r"C:/temp/foo.png", screenshot)

Neuer Kommentar
( wird auf der Seite/Blog erscheinen )
( wird nicht auf der Seite/Blog erscheinen )

1 Kommentare

Christian Petry

02. August 2021

Danke für den interessanten Beitrag, die Prozedur kannte ich noch nicht.

 

Einen Screenshot des Bildschirms zu erstellen hat auch Nachteile weshalb wir das nur als Fallback nutzen.

Nachteile sind z.B.

- bei headless Tests nutzlos

- wenn mehrere Tests gleichzeitig laufen wird zeigt der Screenshot evtl. nicht die korrekte Applikation

- wenn die Applikation nicht im Vollbild läuft wird der Screenshot unnötig gross

 

Man kann auch einen Screenshot einer Komponente erstellen statt des ganzen Bildschirms:

currentScreenshot = iw.grabImage(rc.getComponent("$(componentId)"))

Man kann damit auch einen Screenshot des gesamten Browserinhalts machen indem man die "Webseite" Komponente verwendet.