Selenium-Jobs mit Timern
Funktion | Dieses Plugin dient zum Testen von Webanwendungen mithilfe des Selenium-Frameworks. Es führt RobotFramework- oder Python-basierte Tests auf einem Headless-Chrome-Browser aus, der sich auf einem Kollektor befindet, wartet auf den Abschluss der Ausführung, ruft anschließend die generierten Protokolldateien ab und zeigt sie auf einer Übersichtsseite an. |
|---|---|
Alarmierung | Laufzeit, Antwortcode, Ergebniscode |
Allgemeine Informationen zum Selenium-Job
Selenium-Projekte können entweder mit RobotFramework oder in Python erstellt werden.
Um Selenium-Projektdateien auf externen Kollektoren verfügbar zu machen, müssen die SKOOR-SyncFS-Dienste konfiguriert und in Betrieb sein. Der Benutzer „reranger“ muss so konfiguriert sein, dass er sich ohne Passwort anmeldet, wie im Replikationshandbuch beschrieben.
RobotFramework
Eine Robot-Datei wird unter Verwendung des Headers aus /opt/eranger/Kollektor/robot.robot generiert und um die in der Engine bereitgestellte Datei ergänzt. Nur in besonderen Fällen möchte der Benutzer möglicherweise eine vollständige Robot-Datei bereitstellen. Eine gute Informationsquelle zu den Möglichkeiten ist das RobotFramework-Benutzerhandbuch. Robot-Dateien werden im Verzeichnis /opt/eranger/Kollektor/upload/ abgelegt
Abschnitt „Informationen“ in der Jobkonfiguration:
Die Chrome- oder Firefox-Erweiterung „Katalon Recorder“ kann verwendet werden, um einen Testablauf aufzuzeichnen und den Testfall-Teil zu exportieren (Format: Robot Framework).
Beispielskripte:
Eine einfache Robot-Datei könnte dann wie folgt aussehen:
[Teardown] Run Keyword If Test Failed Capture Page Screenshot
Set Window Size ${1920} ${1200}
Start Timer totalTime
Start Timer Open
Goto https://my.great.business.com/
Stop Timer Open
click link=Business
sleep 3s
Stop Timer totalTime
Ein fortgeschritteneres Skript mit mehreren Timern und TRY/EXCEPT-Blöcken:
Start Timer TotalTime
Start Timer Open
TRY
Goto https://my.great.business.com/
Stop Timer Open
EXCEPT
Capture Page Screenshot
Error Timer Website unavailable
ErrorCode Timer 11
Stop Timer Open
END
Start Timer Contact
TRY
click link=Contact
Stop Timer Contact
EXCEPT
Capture Page Screenshot
Error Timer Contact link failed
ErrorCode Timer 22
Stop Timer Contact
END
sleep 2s
Start Timer Home
TRY
click link=Home
Stop Timer Home
EXCEPT
Capture Page Screenshot
Error Timer Home link failed
ErrorCode Timer 33
Stop Timer Home
END
sleep 2s
Stop Timer TotalTime
Python
Die Python-Module „Selenium“ und „SKOOR“ für Selenium-Webtests sind auf den SKOOR Collectors vorinstalliert. Python-Skripte können entwickelt und direkt mit dem Plugin verwendet werden, sobald sie fertiggestellt sind. Zusätzlich kann die Selenium-IDE zum Aufzeichnen von Anwendungsfällen verwendet werden.
Informationsbereich in der Jobkonfiguration:
Beispielskript: Zunächst werden die erforderlichen Module importiert und die Browserparameter festgelegt. Anschließend wird der SKOOR-Timer „totalTime“ gestartet und ein Testschritt in einem try/except-Block mit einem zweiten Timer, „step1“, ausgeführt. Auf diese Weise können Timer konfiguriert und später in der SKOOR Engine verwendet werden.
#!/usr/bin/python3
import sys, time, skoor, traceback
from skoor import SkoorTimer, Variables, SkoorScreenshot
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
opts = ChromeOptions()
opts.add_argument("--headless=new")
opts.add_argument("--no-sandbox")
opts.add_argument("--disable-setuid-sandbox")
opts.add_argument("--disable-gpu")
opts.add_argument("--allow-running-insecure-content")
opts.add_argument("--disable-extensions")
opts.add_argument("--ignore-certificate-errors")
opts.binary_location = os.getenv("SKOOR_PUPPETEER_CHROME_EXECUTABLE")
cap = DesiredCapabilities().CHROME
cap["marionette"] = True
driver = webdriver.Chrome(chrome_options=opts)
skoor.setLogLevel(skoor.INFO)
driver.set_window_size(1920,1200)
totalTime = SkoorTimer("TotalTime")
step1 = SkoorTimer("Step 1")
totalTime.start()
try:
step1.start()
skoor.log(skoor.INFO, "Search started")
driver.get("https://xyz.com")
driver.find_element_by_id("html-element1")
skoor.log(skoor.INFO, "Step 1 done")
step1.stop()
except:
skoor.log(skoor.ERROR, traceback.format_exc())
SkoorScreenshot().capture(driver)
step1.error(-2, "Step 1 failed")
totalTime.stop()
driver.quit()
skoor.log(skoor.INFO, "Script done")
Wurde die Selenium-IDE zur Aufzeichnung eines Testfalls verwendet, kann der Inhalt der Funktion „test_<NAME>“ in einen „try“-Block des Python-3-Skripts kopiert werden:
def test_dict(self):
self.driver.get("https://dict.leo.org/englisch-deutsch/")
self.driver.set_window_size(1515, 948)
self.driver.find_element(By.LINK_TEXT, "Forum").click()
Falls von der Selenium IDE zusätzliche Python-Module wie „by“ oder „key“ verwendet wurden, müssen diese Module ebenfalls in den Import-Abschnitt des endgültigen Skripts aufgenommen werden:
#!/usr/bin/python3 import sys, time, skoor, traceback from skoor import SkoorTimer, Variables, SkoorScreenshot from selenium import webdriver from selenium.webdriver import Chrome from selenium.webdriver import ChromeOptions from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys ...
Es ist wichtig, dass der Befehl `driver.quit()` in jedem Fall ausgeführt wird. Andernfalls kommt es zu einem Ressourcenleck!
Selenium-Gerät
Beim Erstellen eines Selenium-Geräts wird der folgende Bildschirm mit den Konfigurationsoptionen angezeigt:
Das Selenium-Plugin wird in einem Headless-Browser direkt auf dem ausgewählten Kollektor ausgeführt.
Selenium-Job-Parameter
Parameter | Beschreibung |
|---|---|
Laufzeitlimit | Geben Sie die Zeit an, die für die Ausführung des Projekts zur Verfügung stehen soll. Dies hängt davon ab, was das Projekt tut. Dieser Parameter ist optional; ein Wert von 0 oder ein leeres Feld bedeutet, dass überhaupt kein Zeitlimit festgelegt wird. |
Suite-Name | Wenn eine vollständige Robot-Datei mit „Einstellungen“ usw. bereitgestellt wird, wird diese unverändert ausgeführt. In der Regel ist nur der Teil „Testfall“ erforderlich. In einem solchen Fall wird der Header aus /opt/eranger/Kollektor/robot.robot übernommen. |
Selenium-Eigenschaften
Parameter | Beschreibung |
|---|---|
Selenium-Option | Über diese Eigenschaft können Escape-Sequenzen und andere Optionen festgelegt werden. |
Selenium-Variable | In dieser Eigenschaft können Variablen für die Robot-Datei definiert werden, z. B. INFO:info oder TIMEOUT:0 |
Details zum Selenium-Timer
Genauso wie Timer-Jobs zu EEM-Projekt-Jobs hinzugefügt werden, können Timer-Jobs unterhalb eines Selenium-Jobs hinzugefügt werden. Der einzige Parameter ist der Name des Timers.
Timer, die einen Start- und einen Stopp-Eintrag enthalten (generiert entweder durch „Timer stoppen“ oder „Timer pausieren“), gelten als erfolgreich.
Die folgenden Schlüsselwörter stehen für die Verwendung von Timern in der Robot-Datei zur Verfügung
Start Timer $name
Timer anhalten $name
Timer fortsetzen $name
Timer stoppen $name
Selenium-Timer-Parameter
Parameter | Beschreibung |
|---|---|
Timer-Name | Bei einem Selenium-Timer-Job können nur der Jobname und der Timer-Name konfiguriert werden. Der Name des Jobs kann sich vom Timer-Namen unterscheiden, aber der Timer-Name muss mit dem in der Robot-Datei angegebenen Timer-Namen übereinstimmen. |
Selenium-Timer-Werte und Alarm Limits
Wert / Alarm Limit | Beschreibung |
|---|---|
Laufzeit | Die Laufzeit dieses bestimmten Timers |
Ergebniscode | 0 = OK – 1 |
Fehlercode | Allgemeiner Job-Fehlercode (siehe Abschnitt „Job-Fehlercodes“) |
Selenium-Ergebnisse
Nach einem Lauf des Plugins sieht der Abschnitt „Werte“ des Selenium-Jobs wie folgt aus:
oder im Falle eines Fehlers während der Ausführung:
Ein Klick auf den Link „Ergebnisdateien“ im Abschnitt „Werte“ öffnet den folgenden neuen Browser-Tab:
Diese Seite bietet einen Überblick über die durchgeführten Tests und deren Ergebnisse. Für jeden Durchlauf, bei dem von der SKOOR Engine Protokolle erfasst wurden, gibt es eine Zeile mit einem Zeitstempel und einem Link zur entsprechenden Ergebnisdatei. Wenn während eines Durchlaufs Fehler aufgetreten sind, wird der Link in der Spalte „Fehlgeschlagene Tests“ angezeigt, zusammen mit einem Screenshot (sofern vom Skript erstellt) und den fehlgeschlagenen Timern. Dies gibt in der Regel einen guten Einblick, warum ein Testdurchlauf fehlgeschlagen ist.
Ein Klick auf die „Berichtsdatei“ im Abschnitt „Werte“ öffnet eine HTML-Seite, die eine Übersicht über die Ausführungsergebnisse sowie einen Link zu einer detaillierteren HTML-Berichtsdatei enthält (dieselbe Datei, auf die auch direkt im Abschnitt „Werte“ zugegriffen werden kann).
Selenium-Werte und Alarm Limits
Wert / Alarm Limit | Beschreibung |
|---|---|
Laufzeit | Die Laufzeit des Plugins |
Ergebniscode | 0 = OK – 1 |
Fehlercode | Generischer Job-Fehlercode (siehe Abschnitt „Job-Fehlercodes“) |






