Jobs Selenium avec Timers
Fonction | 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 tête qui est situé sur un collecteur, il attend la fin de l'exécution, puis récupère les fichiers journaux générés et les affiche dans une page d'aperçu. |
---|---|
Alarmes | Temps d'exécution, code de réponse, code de résultat |
Informations générales sur les projets Selenium
Les projets Selenium peuvent être créés en utilisant le RobotFramework ou le langage Python.
Pour rendre les fichiers de projet Selenium disponibles sur des collecteurs externes, les services SKOOR syncfs doivent être configurés et fonctionner. L'utilisateur reranger doit être configuré pour se connecter sans mot de passe comme décrit dans le guide de réplication.
Cadre du robot
Un fichier robot est généré en utilisant l'en-tête de /opt/eranger/collector/robot.robot et ajouté par 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 de l'utilisateur de RobotFramework est une bonne source d'informations sur les possibilités offertes. Les fichiers de robot seront placés sur /opt/eranger/collector/upload/.
Section d'information dans la configuration du travail :
L'extension Chrome ou Firefox Katalon Recorder peut être utilisée pour enregistrer une procédure de test et exporter la partie testcase (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 timers 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 Selenium et SKOOR Python pour les tests web Selenium sont préinstallés avec SKOOR Collector. Les scripts Python peuvent être développés et utilisés avec le plugin au fur et à mesure de leur développement. En outre, l'IDE Selenium peut être utilisé pour enregistrer les cas d'utilisation.
Section d'information dans la configuration du travail :
Example Script : Tout d'abord, les modules requis sont importés et les paramètres du navigateur sont définis. Ensuite, le timer SKOOR totalTime est démarré et une étape de test est exécutée dans un bloc try/except avec un second timer, step1. De cette manière, les minuteries peuvent être configurées et utilisées ultérieurement dans 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")
Si Selenium IDE a été utilisé pour enregistrer un scénario 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 d'importation 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.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 ...
Il est important que l'opération driver.quit() soit traitée dans tous les cas. Il est important que l'opération driver.quit() soit traitée dans tous les cas, sinon il y aura une fuite de ressources !
Dispositif Selenium
Lors de la création d'un dispositif Selenium, l'écran d'options de configuration suivant s'affiche :
Le plugin Selenium sera exécuté dans un navigateur sans tête directement sur le collecteur sélectionné.
Paramètres de la tâche Selenium
Paramètre | Description |
---|---|
Limite de temps d'exécution | Spécifiez la durée d'exécution du projet. Cela dépend de ce que fait le projet. Ce paramètre est facultatif. Une valeur de 0 ou une valeur vide signifie qu'aucun délai ne sera fixé. |
Nom de la suite | Si un fichier robot complet avec 'Settings' etc. est fourni, il est exécuté sans modification. En général, seule la partie "Cas de test" est requise. Dans ce cas, l'en-tête provient de /opt/eranger/collector/robot.robot. |
Propriétés Selenium
Paramètre | Description de l'option |
---|---|
Option Selenium | Les séquences d'échappement et d'autres options peuvent être définies par cette propriété. |
Selenium Variable | Des variables pour le fichier robot peuvent être définies dans cette propriété comme INFO:info ou TIMEOUT:0. |
Détails de la minuterie Selenium
De la même manière que les timer jobs sont ajoutés aux projets EEM, les timer jobs peuvent être ajoutés en dessous d'un Selenium job. Le seul paramètre est le nom de la minuterie.
Les minuteries contenant une entrée de démarrage et une entrée d'arrêt (générées par "Stop Timer" ou "Pause Timer") sont considérées comme réussies.
Les mots-clés suivants sont disponibles pour utiliser les temporisations dans le fichier robot
Minuterie de démarrage $nom
Minuterie d'arrêt $nom
Resume Timer $name
Stop Timer $name
Paramètres de la minuterie Selenium
Paramètre | Description du paramètre |
---|---|
Timer name | Seuls le nom de la tâche et le nom de la minuterie peuvent être configurés sur une tâche Selenium Timer. Le nom de la tâche peut être différent du nom de la minuterie, mais le nom de la minuterie doit correspondre au nom de la minuterie tel qu'il est écrit dans le fichier du robot. |
Valeurs et seuils d'alarme de la minuterie Selenium
Valeur / Limite d'alarme | Description de la valeur |
---|---|
Durée d'exécution | Durée d'exécution de cette minuterie particulière |
Code de résultat | 0 = OK |
Code d'erreur | Code d'erreur générique de la tâche (voir la section Codes d'erreur de la tâche) |
Résultats Selenium
Après une exécution du plugin, la section des valeurs du job Selenium ressemble à ceci :
ou en cas d'erreur pendant l'exécution :
En cliquant sur le lien Fichiers de résultats dans la section Valeurs, un nouvel onglet de navigateur s'affiche :
Cette page donne un aperçu des tests qui ont été exécutés et de leurs résultats. Pour chaque exécution où des journaux ont été collectés par SKOOR Engine, il y a une ligne avec un horodatage et un lien vers le fichier de résultat correspondant. S'il y a eu des erreurs lors d'une exécution, le lien est placé dans la colonne Tests échoués, avec une capture d'écran (si elle a été prise par le script) et le(s) timer(s) échoué(s). Cela donne généralement une bonne idée de la raison pour laquelle un test a échoué.
En cliquant sur le fichier Rapport dans la section Valeurs, une page html s'affiche, qui comprend une vue d'ensemble des résultats de l'exécution ainsi qu'un lien vers un fichier rapport html plus détaillé (le même fichier auquel on peut également accéder directement dans la section Valeurs).
Valeurs et seuils d'alarme Selenium
Valeur / Limite d'alarme | Description de la valeur |
---|---|
Durée d'exécution | Durée d'exécution du plugin |
Code de résultat | 0 = OK |
Code d'erreur | Code d'erreur générique de la tâche (voir la section Codes d'erreur de la tâche) |