Selenium-Jobs mit Timern

Funktion

Dieses Plugin dient zum Testen von Websites mit dem Selenium-Framework. Es führt RobotFramework- oder Python-basierte Tests auf einem Headless-Chrome-Browser aus, der sich auf einem Kollektor befindet, wartet bis die Ausführung beendet ist, ruft dann die generierten Log-Dateien ab und zeigt sie auf einer Übersichtsseite an.

Alarmierung

Laufzeit, Antwortcode, Ergebniscode

Allgemeine Informationen zu Selenium-Jobs

Selenium-Projekte können entweder mit RobotFramework oder mit der Programmiersprache Python erstellt werden.

Um Selenium-Projektdateien auf externen Kollektoren verfügbar zu machen, müssen die SKOOR syncfs-Dienste konfiguriert sein und ausgeführt werden. User reranger muss so konfiguriert sein, dass die Anmeldung ohne Passwort erfolgt, wie im Replikationshandbuch beschrieben.

RobotFramework

Eine Roboterdatei wird unter Verwendung des Headers aus /opt/eranger/Kollektor/robot.robot generiert und durch die bereitgestellte Datei in der Engine ergänzt. Nur in besonderen Fällen kann es erforderlich sein, eine vollständige Roboterdatei bereitzustellen. Eine gute Informationsquelle zu den Möglichkeiten ist das RobotFramework-Benutzerhandbuch. Roboterdateien werden unter /opt/eranger/Kollektor/upload/ abgelegt.

Informationsbereich in der Jobkonfiguration:

Mit der Chrome- oder Firefox-Erweiterung Katalon Recorder können Sie einen Testablauf aufzeichnen und den Testfallteil exportieren (Format: Robot Framework).

Beispielskripte:

Eine einfache Roboterdatei 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

Selenium und SKOOR Python-Module für Selenium-Webtests sind bei SKOOR Collectors vorinstalliert. Python-Skripte können mit dem Plugin entwickelt und verwendet werden, sobald sie entwickelt sind. Zusätzlich kann die Selenium IDE zur Aufzeichnung von Anwendungsfällen verwendet werden. 

Informationsbereich in der Jobkonfiguration:

Beispielskript: Zunächst werden die erforderlichen Module importiert und die Browserparameter festgelegt. Dann 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")

Wenn Selenium IDE zur Aufzeichnung eines Testfalls verwendet wurde, 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()

 Wenn zusätzliche Python-Module wie by oder key von Selenium verwendet wurden, müssen diese Module ebenfalls zum Import-Abschnitt des endgültigen Skripts hinzugefügt 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 die Operation driver.quit() in jedem Fall verarbeitet wird. Andernfalls kommt es zu einem Ressourcenverlust!

Selenium-Gerät

Beim Erstellen eines Selenium-Geräts wird der folgende Konfigurationsoptionsbildschirm 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 steht. Diese hängt davon ab, was das Projekt tut. Dieser Parameter ist optional. Der Wert 0 oder ein leeres Feld bedeutet, dass überhaupt kein Zeitlimit festgelegt wird.

Suite-Name

Wenn eine vollständige Roboterdatei mit „Einstellungen“ usw. bereitgestellt wird, wird diese unverändert ausgeführt. In der Regel ist nur der Teil „Testfall“ erforderlich. In diesem Fall wird der Header aus /opt/eranger/Kollektor/robot.robot übernommen.

Selenium-Eigenschaften

Parameter

Beschreibung

Selenium-Option

Escape-Sequenzen und andere Optionen können über diese Eigenschaft festgelegt werden.

Selenium-Variable

Variablen für die Roboter-Datei können in dieser Eigenschaft definiert werden, z. B. INFO:info oder TIMEOUT:0

Selenium-Timer-Details

Genauso wie Timer-Jobs zu EEM-Projekt-Jobs hinzugefügt werden, können Timer-Jobs unter einem Selenium-Job hinzugefügt werden. Der einzige Parameter ist der Name des Timers. 

Timer, die einen Start- und einen Stopp-Eintrag enthalten (entweder durch „Stop Timer” oder „Pause Timer” generiert), gelten als erfolgreich.

Die folgenden Schlüsselwörter stehen zur Verwendung von Timern in der Roboterdatei zur Verfügung

  • Start Timer $name

  • Pause Timer $name

  • Timer fortsetzen $name

  • Stop Timer $name

Selenium-Timer-Parameter

Parameter

Beschreibung

Timer-Name

Bei einem Selenium-Timer-Job können nur der Jobname und der Timername konfiguriert werden. Der Name des Jobs kann sich vom Timernamen unterscheiden, aber der Timername muss mit dem Timernamen übereinstimmen, der in der Roboter-Datei angegeben ist.

Selenium-Timer-Werte und Alarm Limits

Wert / Alarm Limit

Beschreibung

Laufzeit

Die Laufzeit dieses bestimmten Timers

Ergebniskode

 0 =
OK-1 = Nicht
ausgeführt-2 =
Fehlgeschlagen-3 = Beendet, aber nicht
gestartet-4 = Timer-Name
leer-5 = Selenium-Fehler

Fehlercode

Generischer Job-Fehlercode (siehe Abschnitt „Job-Fehlercodes”)

Selenium-Ergebnisse

Nach Ausführung des Plugins sieht der Wertebereich des Selenium-Jobs wie folgt aus:

oder im Falle eines Fehlers während der Ausführung:

Wenn Sie auf den Link „Ergebnisdateien” im Abschnitt „Werte” klicken, wird die folgende neue Browser-Registerkarte angezeigt:

Diese Seite bietet einen Überblick über die durchgeführten Tests und deren Ergebnisse. Für jeden Lauf, bei dem Protokolle von SKOOR Engine erfasst wurden, gibt es eine Zeile mit einem Zeitstempel und einem Link zur entsprechenden Ergebnisdatei. Wenn während eines Laufs Fehler aufgetreten sind, wird der Link in die Spalte „Fehlgeschlagene Tests“ eingefügt, zusammen mit einem Screenshot (sofern vom Skript erstellt) und den fehlgeschlagenen Timern. Dies gibt in der Regel einen guten Überblick darüber, warum ein Testlauf fehlgeschlagen ist. 

Wenn Sie auf die Datei „Report“ im Abschnitt „Values“ klicken, wird eine HTML-Seite mit einer Übersicht über die Ausführungsergebnisse sowie einem Link zu einer detaillierteren HTML-Berichtsdatei angezeigt (die gleiche Datei, auf die Sie auch direkt im Abschnitt „Values“ zugreifen können).

Selenium-Werte und Alarm Limits

Wert / Alarm Limit

Beschreibung

Laufzeit

Die Laufzeit des Plugins

Ergebniscode

 0 =
OK-1 = Allgemeiner
Fehler-10 = Ausführung
fehlgeschlagen-11 = Parameter
fehlt-12 = Roboter-Datei nicht
gefunden-13 = Selenium fehlgeschlagen

Fehlercode

Allgemeiner Job-Fehlercode (siehe Abschnitt „Job-Fehlercodes”)