Wie kann ich mit QF-Test Screenshots von meiner Client-Anwendung erstellen?

QF-Test sieht mit Bordmitteln nur vor, Screenshots einer Client-Anwendung in das Testlaufprotokoll zu schreiben. Das geht über den Knoten “Nachricht” oder die Prozedur qfs.run-log.screenshots.logScreenshot aus der qfs.qft-Standardbibliothek.

Screenshots in einer Datei speichern

Manchmal möchte man aber einen Screenshot nicht im Testlaufprotokoll ablegen, sondern für andere Dinge weiterverwenden und dafür erst mal in einem Verzeichnis abspeichern. Das geht mit QF-Test natürlich auch, aber dafür braucht es ein Skript (nur ein ganz kleines):

from imagewrapper import ImageWrapper
from java.io import File
screenshot = ImageWrapper(rc).grabImage(rc.getComponent("#Window:"))
screenshot.writeToFile(File(str(rc.groups.qftest.suite.dir) + "/screenshot.png"))

Dieses Jython-SUT-Skript verwendet den exakt gleichen Mechanismus zum Erstellen von Bildschirmabbildern, der auch für das Testlaufprotokoll verwendet wird.

rc.groups.qftest.suite.dir ist eine nützliche Abkürzung, um das Verzeichnis der aktuellen Testsuite zu ermitteln. Sie können writeToFile() aber natürlich auch mit einem beliebigen anderen Pfad aufrufen. "#Window:" ist eine SmartID und steht für das erste Fenster Ihrer Anwendung. Hier können Sie auch eine spezifischere Komponente angeben, um einen Screenshot von einem bestimmten Teil der Anwendungs-UI zu erstellen.

Mehr über die ImageWrapper-Klasse erfahren Sie hier im QF-Test Handbuch: Die ImageWrapper-Klasse.