Heute gibt es von meiner Seite aus ein Update zu meinem Abschlussprojekt mit den Selenium Tests in Appium. Geschrieben werden die Tests mit WebdriverIO.
Selenium
Selenium ist ein Framework für automatisierte Softwaretests von Webanwendungen.
Appium
Appium ist ein Open Source-Automatisierungstool zum Ausführen von Skripten und zum Testen nativer Anwendungen.
WebdriverIO
WebdriverIO erlaubt es sämtliche Anwendungen, welche mit modernen Web-Frameworks wie z. B. React, Angular und Vue.js geschrieben wurden und auch native Mobile-Apps für Android und iOS zu automatisieren.
Vieles läuft in der Praxis anders als in der Theorie. Bei der Kundenapp, für die ich die Tests mit Appium schreibe, sind z. B. sehr viele lange Ladezeiten, bei denen ich bei der Funktion "waitForDisplayed" am Anfang Time-outs von 3000 ms verwendet habe, was jedoch nun mittlerweile auf 30000 ms - 60000 ms erhöht wurde.
Wait-For-Displayed & Time-outs
Wait-For-Displayed ist eine Funktion von WebdriverIO, welche sich auf ein Element bezieht. Diese Funktion wartet, bis das jeweilige Element angezeigt wird.
Time-outs sind eine Option für die Funktion Wait-For-Displayed, welche angibt, wie viel Zeit verstreichen muss, bis die Funktion nicht mehr wartet und einen Error wirft. In dem hier erwähnten Zusammenhang wird die Funktion Wait-For-Displayed mit einem Time-out von 30000 ms (30s) ausgeführt, was bedeutet, dass die Funktion 30 Sekunden lang wartet und wenn das Element nach den 30 Sekunden immer noch nicht angezeigt wird, einen Error ausgibt.
Nachfolgend ein Beispiel, wie eine auf ein Element bezogene Wait-For-Displayed Funktion in WebdriverIO aussehen kann.
element.waitForDisplayed({timeout: 30000});
Ebenfalls werden in der Kundenapp einige Elemente verwendet, bei denen die accessibilityLabels nicht erreichbar sind, wodurch man den XPath verwenden muss. Ebenso sind einige Elemente nur durch eine Browser-Touch-Action klickbar oder bewegbar.
Accessibility-Labels
Accessibility-Labels sind spezielle Labels, mit denen die zu testenden Komponenten markiert werden können, um diese in den Tests schneller aufrufen zu können.
Nachfolgend ein Beispiel, wie es aussehen kann, wenn man ein Accessibility-Label in WebdriverIO aufruft.
$("~beispielLabel");
XPath
XPath ist eine Syntax oder Sprache zum Finden von sämtlichen Elementen in einer Webseite oder App durch Nutzung von XML-Path-Expressions.
Es kann sowohl für HTML als auch für XML Dokumente genutzt werden, um die Position von jedem Element auf einer Webseite oder App, welche die HTML DOM Struktur nutzt, zu finden.
Nachfolgend ein Link zu einer Erklärung, wie man XPath in Selenium verwendet (die Erklärung ist in Englisch).
Browser-Touch-Action
Browser-Touch-Action ist eine vom Browser ausgeführte Funktion, welche ein Element oder eine bestimmte Position auf dem App-Bildschirm berühren, antippen oder sogar ziehen / sliden kann.
Nachfolgend ein Code-Beispiel mit einer Browser-Touch-Action, welche in WebdriverIO den App-Bildschirm auf den Koordinaten "X: 300 px" und "Y: 500 px" antippen soll, sowie ein Code-Beispiel, welches den App-Bildschirm nach oben ziehen soll, um runter zu scrollen.
browser.touchAction({
action: 'tap',
x: 300,
y: 500
});
browser.touchAction([
{action: 'press', x: 660, y: 2500},
{action: 'wait', ms: 1000},
{action: 'moveTo', x: 660, y: 500},
'release'
]);
Der erste vollständige Test benötigte ca. 7 Minuten, was länger als erwartet war.
Weitere Beiträge bezüglich meiner Prüfungsphase werden folgen.
Photo by freestocks on Unsplash