Selenium-Jobs mit Timern

Funktion

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

Alarmierung

Ausführungszeit, Antwortcode, Ergebniscode

Allgemeine Informationen zu Selenium Jobs

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

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

RobotFramework

Eine Roboterdatei wird unter Verwendung des Headers aus /opt/eranger/collector/robot.robot erzeugt und durch die bereitgestellte Datei in der Engine ergänzt. Nur in besonderen Fällen kann es sein, dass der Benutzer eine vollständige Roboterdatei bereitstellen möchte. Eine gute Quelle für Informationen über die Möglichkeiten ist das RobotFramework User Guide. Die Roboterdateien werden unter /opt/eranger/collector/upload/ abgelegt.

Informationsabschnitt in der Auftragskonfiguration:

Die Chrome- oder Firefox-Erweiterung Katalon Recorder kann verwendet werden, um einen Testablauf aufzuzeichnen und den Testfallteil zu exportieren (Format: RobotFramework).

Beispiel-Skripte:

Eine einfache Roboterdatei könnte dann so 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 fortgeschrittenes 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-Web-Tests sind bei SKOOR Collectors vorinstalliert. Python-Skripte können mit dem Plugin entwickelt und verwendet werden, während sie entwickelt werden. Zusätzlich kann die Selenium IDE verwendet werden, um Anwendungsfälle aufzuzeichnen.

Informationsabschnitt in der Job-Konfiguration:

Beispiel-Skript: Zunächst werden die benötigten Module importiert und die Browserparameter gesetzt. 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.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

opts = Options()
opts.set_headless()
cap = DesiredCapabilities().CHROME
cap["marionette"] = True
assert opts.headless  # Operating in headless mode
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 der Selenium IDE verwendet wurden, müssen diese Module auch 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.chrome.options import Options
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() auf jeden Fall verarbeitet wird. Sonst gibt es ein Ressourcenleck!

Selenium-Gerät

Beim Erstellen eines Selenium-Geräts wird der folgende Bildschirm mit Konfigurationsoptionen angezeigt:


Das Selenium Plugin wird in einem Headless Browser direkt auf dem ausgewählten Kollektor ausgeführt.

Selenium Job-Parameter

Parameter

Beschreibung

Zeitlimit für die Ausführung

Geben Sie an, wie viel Zeit 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 leerer Wert bedeutet, dass kein Zeitlimit gesetzt wird.

Name der Suite

Wenn eine vollständige Roboterdatei mit "Einstellungen" usw. angegeben wird, wird sie unverändert ausgeführt. Normalerweise ist nur der Teil "Testfall" erforderlich. In einem solchen Fall wird der Header aus /opt/eranger/collector/robot.robot übernommen.

Selenium Eigenschaften

Parameter

Beschreibung

Selenium Option

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

Selenium-Variable

In dieser Eigenschaft können Variablen für die Roboterdatei definiert werden, wie INFO:info oder TIMEOUT:0

Selenium Timer Details

Auf die gleiche Weise, 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 Timer-Name.

Timer, die einen Start- und einen Stopp-Eintrag enthalten (entweder durch "Stop Timer" oder "Pause Timer" erzeugt), werden als erfolgreich angesehen.

Die folgenden Schlüsselwörter stehen für die Verwendung von Timern in der Robot-Datei zur Verfügung

  • Start Timer $name

  • Pause Timer $name

  • Timer fortsetzen $name

  • Timer anhalten $name

Selenium Timer-Parameter

Parameter

Beschreibung

Timer-Name

Für einen Selenium Timer-Job können nur der Job-Name und der Timer-Name konfiguriert werden. Der Job-Name kann sich vom Timer-Namen unterscheiden, aber der Timer-Name muss mit dem Timer-Namen übereinstimmen, wie er in der Roboterdatei steht.

Selenium Timer Werte und Alarm Limits

Wert / Alarm Limit

Beschreibung

Laufzeit

Die Laufzeit dieses bestimmten Timers

Ergebnis-Code

0 = OK
-1 = Nicht gelaufen
-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 einem Lauf 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 geöffnet:

Diese Seite bietet einen Überblick über die gelaufenen Tests und ihre Ergebnisse. Für jeden Durchlauf, bei dem Protokolle von SKOOR Engine gesammelt wurden, gibt es eine Zeile mit einem Zeitstempel und einem Link zur entsprechenden Ergebnisdatei. Wenn während eines Laufs Fehler auftraten, wird der Link in der Spalte Fehlgeschlagene Tests angezeigt, zusammen mit einem Screenshot (falls vom Skript erstellt) und dem/den fehlgeschlagenen Zeitgeber(n). Dies gibt in den meisten Fällen eine gute Vorstellung davon, warum ein Testlauf fehlgeschlagen ist.

Durch Anklicken der Berichtsdatei im Abschnitt Werte wird eine HTML-Seite angezeigt, die einen Überblick ü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

Ausführungszeit

Die Laufzeit des Plugins

Ergebnis-Code

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

Fehlercode

Generischer Job-Fehlercode (siehe Abschnitt Job-Fehlercodes)