Lavori di Selenium con timer

Funzione

Questo plugin serve per eseguire test web utilizzando il framework Selenium. Esegue test basati su RobotFramework o Python su un browser chrome headless che si trova su un collettore, attende che l'esecuzione termini, quindi recupera i file di log generati e li visualizza in una pagina di riepilogo.

Allarmi

Tempo di esecuzione, Codice risposta, Codice risultato

Informazioni generali sul lavoro di Selenium

I progetti Selenium possono essere creati utilizzando il linguaggio RobotFramework o Python.

Per rendere disponibili i file del progetto Selenium su collettori esterni, è necessario che i servizi syncfs di SKOOR siano configurati e funzionanti. L'utente reranger deve essere configurato per accedere senza password, come descritto nella guida alla replica.

Struttura del robot

Un file robot viene generato utilizzando l'header di /opt/eranger/collector/robot.robot e aggiunto al file fornito nel motore. Solo in casi particolari l'utente potrebbe voler fornire un file robot completo. Una buona fonte di informazioni sulle possibilità è la Guida dell'utente di RobotFramework. I file del robot saranno collocati in /opt/eranger/collector/upload/

Sezione informazioni nella configurazione del lavoro:

L'estensione per Chrome o Firefox Katalon Recorder può essere utilizzata per registrare una procedura di test ed esportare la parte del testcase (formato: robot framework).

Esempi di script:

Un semplice file robot potrebbe avere questo aspetto:

    [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

Uno script più avanzato con timer multipli e blocchi TRY/EXCEPT:

    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

I moduli Python di Selenium e SKOOR per i test web di Selenium sono preinstallati in SKOOR Collector. Gli script Python possono essere sviluppati e utilizzati con il plugin man mano che vengono sviluppati. Inoltre, l'IDE Selenium può essere utilizzato per registrare i casi d'uso.

Sezione informazioni nella configurazione del lavoro:

Script di esempio: Per prima cosa, vengono importati i moduli richiesti e vengono impostati i parametri del browser. Quindi, viene avviato il timer SKOOR totalTime e viene eseguito un passo di test in un blocco try/except con un secondo timer, step1. In questo modo, i timer possono essere configurati e utilizzati successivamente nello SKOOR Engine.

#!/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")

Se Selenium IDE è stato usato per registrare un testcase, il contenuto della funzione test_<nome> può essere copiato in un blocco try dello script Python 3. Se sono stati aggiunti altri moduli Python, come by o except, il test viene eseguito in un blocco try:

  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()

Se l'IDE Selenium ha utilizzato moduli Python aggiuntivi come by o key, questi moduli devono essere aggiunti anche alla sezione di importazione dello script finale:

#!/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
 
...


È importante che l'operazione driver.quit() venga elaborata in ogni caso. Altrimenti si verificherà una perdita di risorse!

Dispositivo Selenium

Quando si crea un dispositivo Selenium, viene mostrata la seguente schermata di opzioni di configurazione:


Il plugin Selenium verrà eseguito in un browser headless direttamente sul collettore selezionato.

Parametri del lavoro di Selenium

Parametro

Descrizione

Limite di tempo di esecuzione

Specificare il tempo di esecuzione del progetto. Questo dipende dalle attività del progetto. Questo parametro è facoltativo; un valore pari a 0 o lasciato vuoto significa che non verrà impostato alcun timeout.

Nome della suite

Se viene fornito un file robot completo di 'Impostazioni' e così via, viene eseguito senza modifiche. Di solito è richiesta solo la parte "Test Case". In questo caso, l'intestazione viene presa da /opt/eranger/collector/robot.robot.

Proprietà di Selenium

Parametro

Descrizione

Opzione Selenium

Le sequenze di escape e altre opzioni possono essere impostate da questa proprietà.

Variabile Selenium

Le variabili per il file robot possono essere definite in questa proprietà, come INFO:info o TIMEOUT:0.

Dettagli del timer di Selenium

Allo stesso modo in cui i timer vengono aggiunti ai lavori del progetto EEM, i timer possono essere aggiunti sotto un lavoro di Selenium. L'unico parametro è il nome del timer.

I timer che contengono una voce di avvio e una di arresto (generata da "Stop Timer" o "Pause Timer") sono considerati riusciti.

Per utilizzare i timer nel file robot sono disponibili le seguenti parole chiave

  • Timer di avvio $nome

  • Timer di pausa $nome

  • Riprendi timer $nome

  • Arresta timer $nome

Parametri del timer di Selenium

Parametro

Descrizione

Nome del timer

In un lavoro del Selenium Timer si possono configurare solo il nome del lavoro e il nome del timer. Il nome del lavoro può essere diverso dal nome del timer, ma il nome del timer deve corrispondere al nome del timer scritto nel file del robot.

Valori e limiti di allarme del timer Selenium

Valore / Limite di allarme

Descrizione

Tempo di esecuzione

Il tempo di esecuzione di questo particolare timer

Codice risultato

0 = OK
-1 = Non eseguito
-2 = Fallito
-3 = Terminato ma non avviato
-4 = Nome del timer vuoto
-5 = Errore di Selenium

Codice di errore

Codice di errore generico del lavoro (vedere la sezione Codici di errore del lavoro)

Risultati di Selenium

Dopo l'esecuzione del plugin, la sezione dei valori del lavoro di Selenium appare come segue:

o in caso di errore durante l'esecuzione:

Facendo clic sul link File dei risultati nella sezione Valori si aprirà la seguente nuova scheda del browser:

Questa pagina fornisce una panoramica dei test eseguiti e dei relativi risultati. Per ogni esecuzione in cui i log sono stati raccolti da SKOOR Engine è presente una riga con un timestamp e un link al file dei risultati corrispondente. Se si sono verificati degli errori durante un'esecuzione, il link viene inserito nella colonna Test falliti, insieme a un'immagine della schermata (se scattata dallo script) e ai timer falliti. In questo modo si può avere un'idea del motivo per cui l'esecuzione di un test non è andata a buon fine.

Facendo clic sul file di report nella sezione Valori si aprirà una pagina html che include una panoramica dell'output dell'esecuzione e un link a un file di report html più dettagliato (lo stesso file a cui si può accedere direttamente nella sezione Valori).

Valori e limiti di allarme di Selenium

Valore / Limite di allarme

Descrizione

Tempo di esecuzione

Il tempo di esecuzione del plugin

Codice risultato

0 = OK
-1 = Errore generale
-10 = Esecuzione fallita
-11 = Parametro mancante
-12 = File robot non trovato
-13 = Selenium non riuscito

Codice di errore

Codice di errore generico del lavoro (vedere la sezione Codici di errore del lavoro)