Selenium Jobs mit Timern

Funktion

Dieses Plugin dient zum Webtesten mit dem Selenium-Framework. Es führt RobotFramework- oder Python-basierte Tests in einem Headless-Chrome-Browser aus, der sich auf einem Kollektor befindet, wartet auf das Ende der Ausführung, ruft dann die generierten Protokolldateien ab und zeigt sie auf einer Übersichtsseite an.

Alarmierend

Laufzeit, Antwortcode, Ergebniscode

Allgemeine Informationen Selenium Job

Selenium Projekte können entweder mit der RobotFramework- oder der Python-Sprache 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 anmeldet, wie im Replikationshandbuch beschrieben

RobotFramework

Eine Roboterdatei wird mithilfe des Headers von /opt/eranger/ Kollektor /robot.robot generiert und durch die bereitgestellte Datei in der Engine angehängt. Nur in besonderen Fällen möchte der Benutzer möglicherweise eine vollständige Roboterdatei bereitstellen. Eine gute Quelle für Informationen 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 kann ein Testvorgang aufgezeichnet und der Testfallteil exportiert werden (Format: Robot Framework).

Beispielskripte:

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 erweitertes 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 mit SKOOR Kollektoren vorinstalliert. Python-Skripte können mit dem Plugin entwickelt und verwendet werden, während sie entwickelt werden. Darüber hinaus kann die Selenium IDE zur Aufzeichnung von Anwendungsfällen verwendet werden.

Informationsbereich in der Jobkonfiguration:

Beispielskript: Zunächst werden die benötigten Module importiert und Browserparameter eingestellt. Anschließend wird der SKOOR-Timer totalTime gestartet und ein Testschritt in einem try/exclusive-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 zum Aufzeichnen eines Testfalls verwendet wurde, wird der Inhalt des test_ Die Funktion kann 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 zum Importabschnitt 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.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 ausgeführt wird. Andernfalls kommt es zu einem Ressourcenleck!

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

Laufzeitbegrenzung

Geben Sie die Zeit an, die für die Ausführung des Projekts vorgesehen ist. Dies hängt davon ab, was das Projekt tut. Dieser Parameter ist optional. Ein Wert von 0 oder wenn er leer bleibt, bedeutet, dass überhaupt kein Timeout festgelegt wird.

Name der Suite

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

Selenium

Parameter

Beschreibung

Selenium Option

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

Selenium

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

Details Selenium Timer

Auf die gleiche Weise, wie Timer-Jobs zu EEM-Projektjobs hinzugefügt werden, können Timer-Jobs unterhalb eines Selenium-Jobs hinzugefügt werden. Der einzige Parameter ist der Timername.

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

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

  • Timer $name starten

  • Timer anhalten $name

  • Timer $name fortsetzen

  • Timer stoppen $name

Selenium Timer-Parameter

Parameter

Beschreibung

Name des Timers

Für einen Selenium Timer-Job können nur der Jobname und der Timername konfiguriert werden. Der Name des Jobs kann sich vom Timer-Namen unterscheiden, aber der Timer-Name muss dem Timer-Namen entsprechen, wie er in der Roboterdatei geschrieben ist.

Selenium Timerwerte und Alarmgrenzen

Wert/ Alarm Limit

Beschreibung

Laufzeit

Die Laufzeit dieses bestimmten Timers

Ergebniscode

0 = Ok
-1 = Nicht ausgeführt
-2 = Fehlgeschlagen
-3 = Beendet, aber nicht gestartet
-4 = Timername leer
-5 = Selenium

Fehlercode

Allgemeiner Job-Fehlercode (siehe Abschnitt Job-Fehlercodes )

Selenium Ergebnisse

Nach einer Ausführung des Plugins sieht der Wertebereich des Selenium Jobs folgendermaßen aus:

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

Wenn Sie im Abschnitt „Werte“ auf den Link „Ergebnisdateien“ klicken, wird die folgende neue Browserregisterkarte 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 zusammen mit einem Screenshot (falls vom Skript erstellt) und den fehlgeschlagenen Timern in die Spalte „ Fehlgeschlagene Tests “ eingefügt. Dies gibt meist eine gute Vorstellung davon, warum ein Testlauf fehlgeschlagen ist.

Durch Klicken auf die Berichtsdatei im Abschnitt „Werte“ wird eine HTML-Seite angezeigt, die eine Übersicht über die Ausführungsausgabe sowie einen Link zu einer detaillierteren HTML-Berichtsdatei enthält (dieselbe Datei, auf die auch direkt im Abschnitt „Werte“ zugegriffen werden kann).

Selenium und Alarmgrenzen

Wert/ Alarm Limit

Beschreibung

Laufzeit

Die Laufzeit des Plugins

Ergebniscode

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

Fehlercode

Allgemeiner Job-Fehlercode (siehe Abschnitt Job-Fehlercodes )