Jobs Selenium avec Timers

Fonctionnalité

Ce plugin est destiné aux tests web utilisant le framework Selenium. Il exécute des tests basés sur RobotFramework ou Python sur un navigateur Chrome sans interface graphique (headless) situé sur un collecteur, attend la fin de l'exécution, puis récupère les fichiers journaux générés et les affiche sur une page de synthèse.

Alertes

Durée d'exécution, code de réponse, code de résultat

Informations générales sur les tâches Selenium

Les projets Selenium peuvent être créés soit à l'aide de RobotFramework, soit en langage Python.

Pour que les fichiers de projet Selenium soient disponibles sur des collecteurs externes, les services SKOOR syncfs doivent être configurés et en cours d’exécution. L’utilisateur reranger doit être configuré pour se connecter sans mot de passe, comme décrit dans le guide de réplication

RobotFramework

Un fichier Robot est généré à partir de l'en-tête situé dans /opt/eranger/collecteur/robot.robot, auquel est ajouté le fichier fourni dans l'Engine. Ce n'est que dans des cas particuliers que l'utilisateur peut souhaiter fournir un fichier Robot complet. Le guide d'utilisation de RobotFramework constitue une bonne source d'informations sur les possibilités offertes. Les fichiers robot seront placés dans /opt/eranger/collecteur/upload/

Section « Informations » dans la configuration de la tâche :

L’extension Chrome ou Firefox « Katalon Recorder » peut être utilisée pour enregistrer une procédure de test et exporter la partie relative au cas de test (format : Robot Framework).

Exemples de scripts :

Un fichier robot simple pourrait alors ressembler à ceci :

    [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

Un script plus avancé avec plusieurs minuteries et des blocs 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

Les modules Python Selenium et SKOOR pour les tests Web Selenium sont préinstallés avec les SKOOR Collectors. Les scripts Python peuvent être développés et utilisés avec le plugin au fur et à mesure de leur développement. De plus, Selenium IDE peut être utilisé pour enregistrer des cas d'utilisation. 

Section d’informations dans la configuration de la tâche :

Exemple de script : tout d’abord, les modules requis sont importés et les paramètres du navigateur sont définis. Ensuite, le minuteur SKOOR « totalTime » est lancé et une étape de test est exécutée dans un bloc try/except avec un deuxième minuteur, « step1 ». De cette manière, les minuteurs peuvent être configurés et utilisés ultérieurement dans le 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")

Si Selenium IDE a été utilisé pour enregistrer un cas de test, le contenu de la fonction test_<NOM> peut être copié dans un bloc « try » du 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()

 Si des modules Python supplémentaires, tels que `by` ou `key`, ont été utilisés par Selenium IDE, ces modules doivent également être ajoutés à la section `import` du script final :

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


Il est important que l’opération `driver.quit()` soit exécutée dans tous les cas. Sinon, il y aura une fuite de ressources !

Périphérique Selenium

Lors de la création d’un périphérique Selenium, l’écran d’options de configuration suivant s’affiche :


Le plugin Selenium s’exécutera dans un navigateur sans interface graphique directement sur le collecteur sélectionné. 

Paramètres de tâche Selenium

Paramètre

Description

Limite de temps d'exécution

Spécifiez la durée allouée à l'exécution du projet. Celle-ci dépend de la nature du projet. Ce paramètre est facultatif ; une valeur de 0 ou un champ laissé vide signifie qu'aucun délai d'expiration ne sera défini.

Nom de la suite

Si un fichier robot complet comprenant les « Paramètres », etc. est fourni, il est exécuté tel quel. En général, seule la partie « Cas de test » est requise. Dans ce cas, l'en-tête est extrait du fichier /opt/eranger/collecteur/robot.robot.

Propriétés Selenium

Paramètre

Description

Option Selenium

Cette propriété permet de définir des séquences d'échappement et d'autres options.

Variable Selenium

Les variables du fichier robot peuvent être définies dans cette propriété, par exemple INFO:info ou TIMEOUT:0

Détails du minuteur Selenium

De la même manière que les tâches planifiées sont ajoutées aux tâches d’un projet EEM, elles peuvent être ajoutées sous une tâche Selenium. Le seul paramètre est le nom de la tâche planifiée. 

Les minuteries contenant une entrée de démarrage et une entrée d’arrêt (générées soit par « Stop Timer », soit par « Pause Timer ») sont considérées comme réussies.

Les mots-clés suivants sont disponibles pour utiliser les minuteries dans le fichier robot

  • Démarrer le minuteur $name

  • Mettre le minuteur en pause $name

  • Reprendre le minuteur $name

  • Stop Timer $name

Paramètres du minuteur Selenium

Paramètre

Description

Nom du minuteur

Seuls le nom de la tâche et le nom du minuteur peuvent être configurés dans une tâche de minuteur Selenium. Le nom de la tâche peut être différent du nom du minuteur, mais ce dernier doit correspondre au nom du minuteur tel qu'il est indiqué dans le fichier du robot.

Valeurs et limites d'alarme du minuteur Selenium

Valeur / Limite d'alarme

Description

Durée d'exécution

Durée d'exécution de ce minuteur spécifique

Code de résultat

 0 = OK - 1
= Non
exécuté - 2 =
Échec - 3 = Terminé mais pas démarré - 4
= Nom du minuteur vide - 5
= Erreur Selenium

Code d'erreur

Code d'erreur générique de la tâche (voir la section « Codes d'erreur des tâches »)

Résultats Selenium

Après l'exécution du plugin, la section « Valeurs » de la tâche Selenium se présente comme suit :

ou en cas d’erreur lors de l’exécution :

En cliquant sur le lien « Fichiers de résultats » dans la section « Valeurs », vous ouvrirez le nouvel onglet de navigateur suivant :

Cette page offre un aperçu des tests qui ont été exécutés et de leurs résultats. Pour chaque exécution pour laquelle des journaux ont été collectés par SKOOR Engine, une ligne apparaît avec un horodatage et un lien vers le fichier de résultats correspondant. Si des erreurs se sont produites au cours d’une exécution, le lien est placé dans la colonne « Tests échoués », accompagné d’une capture d’écran (si elle a été prise par le script) et du ou des temporisateurs ayant échoué. Cela permet généralement de bien comprendre pourquoi une exécution de test a échoué. 

En cliquant sur le fichier « Rapport » dans la section « Valeurs », vous accédez à une page HTML qui présente un aperçu des résultats de l’exécution ainsi qu’un lien vers un fichier de rapport HTML plus détaillé (le même fichier auquel vous pouvez également accéder directement depuis la section « Valeurs »).

Valeurs Selenium et seuils d’alerte

Valeur / Seuil d’alerte

Description

Durée d’exécution

Durée d’exécution du plugin

Code de résultat

 0 = OK -
1 = Erreur générale - 10
= Échec de l'exécution - 11
= Paramètre manquant - 12
= Fichier du robot introuvable - 13
= Échec de Selenium

Code d'erreur

Code d'erreur générique de la tâche (voir la section « Codes d'erreur des tâches »)