Lavori di Selenium con timer

Funzionalità

Questo plugin è destinato ai test web che utilizzano il framework Selenium. Esegue test basati su RobotFramework o Python su un browser Chrome headless situato su un collector, attende il completamento dell'esecuzione, quindi recupera i file di log generati e li visualizza in una pagina di panoramica.

Avvisi

Tempo di esecuzione, codice di risposta, codice di risultato

Informazioni generali sul processo Selenium

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

Per rendere disponibili i file di progetto Selenium su collector esterni, i servizi SKOOR syncfs devono essere configurati e in esecuzione. L’utente reranger deve essere configurato per effettuare l’accesso senza password, come descritto nella guida alla replica

RobotFramework

Un file robot viene generato utilizzando l’intestazione presente in /opt/eranger/collector/robot.robot e integrata con il file fornito nell’Engine. Solo in casi particolari l’utente potrebbe voler fornire un file robot completo. Una buona fonte di informazioni sulle possibilità offerte è la Guida per l’utente di RobotFramework. I file robot verranno collocati in /opt/eranger/collector/upload/

Sezione Informazioni nella configurazione del lavoro:

È possibile utilizzare l’estensione Katalon Recorder per Chrome o Firefox per registrare una procedura di test ed esportare la parte relativa al test case (formato: Robot Framework).

Esempi di script:

Un semplice file robot potrebbe quindi apparire così:

    [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 più timer 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 Selenium e SKOOR per i test web con Selenium sono preinstallati con SKOOR Collector. Gli script Python possono essere sviluppati e utilizzati con il plugin man mano che vengono creati. Inoltre, è possibile utilizzare Selenium IDE per registrare i casi d'uso. 

Sezione informativa nella configurazione del lavoro:

Script di esempio: Innanzitutto, vengono importati i moduli necessari e impostati i parametri del browser. Successivamente, 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 in seguito nell'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 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")

Se Selenium IDE è stato utilizzato per registrare un caso di test, il contenuto della funzione test_<NOME> può essere copiato in un blocco try dello script Python 3:

  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 Selenium IDE ha utilizzato moduli Python aggiuntivi come `by` o `key`, questi moduli devono essere aggiunti anche alla sezione `import` 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 import ChromeOptions
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 eseguita in ogni caso. In caso contrario si verificherà una perdita di risorse!

Dispositivo Selenium

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


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

Parametri del processo Selenium

Parametro

Descrizione

Limite di tempo di esecuzione

Specificare il tempo a disposizione per l'esecuzione del progetto. Questo dipende da cosa fa il progetto. Questo parametro è facoltativo; un valore pari a 0 o un campo lasciato vuoto indica che non verrà impostato alcun timeout.

Nome della suite

Se viene fornito un file robot completo con "Impostazioni" ecc., questo viene eseguito senza modifiche. Di solito è richiesta solo la parte "Caso di test". In tal caso, l'intestazione viene prelevata da /opt/eranger/collector/robot.robot.

Proprietà Selenium

Parametro

Descrizione

Opzione Selenium

Tramite questa proprietà è possibile impostare sequenze di escape e altre opzioni.

Variabile Selenium

In questa proprietà è possibile definire variabili per il file del robot, ad esempio INFO:info o TIMEOUT:0

Dettagli del timer Selenium

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

I timer contenenti una voce di avvio e una di arresto (generate da “Stop Timer” o “Pause Timer”) sono considerati riusciti.

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

  • Avvia timer $nome

  • Metti in pausa timer $name

  • Riprendi timer $name

  • Stop Timer $name

Parametri del timer Selenium

Parametro

Descrizione

Nome del timer

In un'attività con timer Selenium è possibile configurare solo il nome dell'attività e il nome del timer. Il nome dell'attività può essere diverso dal nome del timer, ma il nome del timer deve corrispondere a quello specificato nel file del robot.

Valori del timer Selenium e limiti di allarme

Valore / Limite di allarme

Descrizione

Tempo di esecuzione

Il tempo di esecuzione di questo specifico timer

Codice di risultato

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

Codice di errore

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

Risultati Selenium

Dopo l'esecuzione del plugin, la sezione dei valori del processo Selenium appare così:

oppure, 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 SKOOR Engine ha raccolto i log, è presente una riga con un timestamp e un link al file di risultato corrispondente. Se durante un'esecuzione si sono verificati errori, il link viene inserito nella colonna "Test falliti", insieme a uno screenshot (se acquisito dallo script) e ai timer che hanno segnalato l'errore. Ciò fornisce in genere un'idea chiara del motivo per cui un'esecuzione del test è fallita. 

Facendo clic sul file "Report" nella sezione "Valori" si aprirà una pagina HTML che include una panoramica dell’output dell’esecuzione, nonché un link a un file di report HTML più dettagliato (lo stesso file a cui è possibile accedere direttamente anche nella sezione "Valori").

Valori Selenium e limiti di allarme

Valore / Limite di allarme

Descrizione

Tempo di esecuzione

Il tempo di esecuzione del plugin

Codice di risultato

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

Codice di errore

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