Lavori di Selenium con timer

Funzione

Questo plugin è destinato al test web utilizzando 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.

Allarme

Tempo di esecuzione, codice di risposta, codice di risultato

Informazioni generali sui lavori Selenium

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

Per rendere disponibili i file di progetto Selenium su collector esterni, è necessario configurare ed eseguire i servizi SKOOR syncfs. User reranger deve essere configurato per effettuare il login senza password, come descritto nella guida alla replica.

RobotFramework

Un file robot viene generato utilizzando l'intestazione da /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 per l'utente di RobotFramework. I file robot saranno collocati in /opt/eranger/collector/upload/

Sezione Informazioni nella configurazione del lavoro:

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

Script di esempio:

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

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

Sezione informativa nella configurazione del lavoro:

Script di esempio: Innanzitutto, 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 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 elaborata 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 collettore selezionato. 

Parametri del lavoro Selenium

Parametro

Descrizione

Limite di tempo di esecuzione

Specificare il tempo consentito per l'esecuzione del progetto. Questo dipende dall'attività svolta dal 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 con "Impostazioni" ecc., questo viene eseguito senza modifiche. Di solito è richiesta solo la parte "Caso di test". In tal caso, l'intestazione viene presa da /opt/eranger/collector/robot.robot.

Proprietà Selenium

Parametro

Descrizione

Opzione Selenium

Le sequenze di escape e altre opzioni possono essere impostate tramite 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 Selenium

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

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

Le seguenti parole chiave sono disponibili per utilizzare i timer nel file robot

  • Avvia timer $name

  • Pausa timer $name

  • Riprendi timer $name

  • Stop Timer $name

Parametri del timer Selenium

Parametro

Descrizione

Nome timer

Su un lavoro Selenium Timer è possibile 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 robot.

Valori del timer Selenium e limiti di allarme

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 timer
vuoto-5 = Errore Selenium

Codice di errore

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

Risultati Selenium

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

oppure, in caso di errore durante l'esecuzione:

Cliccando 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 sono stati raccolti i log da SKOOR Engine, è presente una riga con un timestamp e un link al file dei risultati corrispondente. Se durante l'esecuzione si sono verificati degli errori, il link viene inserito nella colonna Test falliti, insieme a uno screenshot (se acquisito dallo script) e ai timer falliti. Questo fornisce un'idea chiara del motivo per cui un test non è andato a buon fine. 

Cliccando sul file 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 è possibile accedere direttamente nella sezione valori).

Valori Selenium e limiti di allarme

Valore / Limite di allarme

Descrizione

Tempo di esecuzione

Il tempo di esecuzione del plugin

Codice risultato

 0 =
OK-1 = Errore
generale-10 = Esecuzione non
riuscita-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)