Fermer

mars 27, 2019

Comment utiliser Selenium WebDriver pour tester plusieurs navigateurs –


Cet article a été publié à l'origine sur LambdaTest . Merci de soutenir les partenaires qui rendent SitePoint possible.

Selenium est un framework de test d’automatisation très utilisé, principalement utilisé pour les tests entre navigateurs . Il est open source et est idéal pour automatiser les tests d'applications Web sur différents navigateurs tels que Firefox, Chrome, Internet Explorer et Microsoft Edge. Selenium est devenu un framework renommé et offre une concurrence féroce à d'autres frameworks de test tels que HP QTP (Quick Test Professional) et AKA HP UFT (Unified Functional Testing). Ce tutoriel pour Selenium WebDriver vous aidera à développer une compréhension de base des composants de la suite Selenium, de l’architecture de Selenium WebDriver et vous montrera comment exécuter l’automatisation afin de tester un site Web pour la compatibilité entre navigateurs à l’aide de Selenium WebDriver pour Google Chrome, Mozilla Firefox et Internet Explorer.

Selenium est une combinaison de différents outils. Chaque outil joue un rôle essentiel dans l’automatisation des tests Web. Intéressons-nous maintenant au didacticiel WebDriver.

Composants de la suite Selenium

Vous trouverez ci-dessous les composants principaux de la suite de tests Selenium:

  • Environnement de développement intégré au sélénium (IDE)
  • Selenium Remote Control (RC)
  • ] Selenium WebDriver
  • Selenium Grid

Voyons maintenant en détail ces composants dans ce tutoriel sur Selenium WebDriver.

Selenium Integrated Development Environment (IDE)

Selenium IDE est un simple plugin de Firefox. il est utilisé pour enregistrer et lire des scripts. Cependant, Selenium IDE ne peut être utilisé que pour écrire des scripts d'automatisation pour automatiser le test de cas d'utilisation simples. Selenium IDE ne prend pas en charge les instructions conditionnelles, la gestion des exceptions, les boucles, la capture d'écran, etc. Pour automatiser des cas d'utilisation complexes, une majorité de développeurs et de testeurs préfèrent opter pour Scripting testing au lieu de Record & Replay . La suite de tests Selenium se compose de Selenium Remote Control (RC) ou de Selenium WebDriver.

Selenium IDE est disponible pour différents systèmes d'exploitation, à savoir Windows, Linux, Mac OS, etc. Selenium IDE pour Firefox peut être téléchargé ici .

Sélénium Télécommande (RC)

Pour tester des scénarios complexes, vous pouvez utiliser Sélénium Télécommande (RC). Il est basé sur le modèle client-serveur qui permet d'exécuter des tests sur le navigateur contrôlé par le serveur. Il existe des bibliothèques clientes dans différents langages de programmation qui permettent aux développeurs d'écrire des scénarios de test efficaces dans un langage de programmation dans lequel ils sont à l'aise et compétents. Depuis la version 2.25.0, RC prend en charge Java, C #, Python, Perl, Ruby, etc.

Le serveur Selenium est le composant principal du Selenium RC. Voici quelques-unes des fonctions / responsabilités principales de Selenium RC:

  • Contient le cadre de base de Selenium et est principalement responsable de son injection dans le navigateur.
  • Le programme client envoie des commandes au contrôleur d'exécution, qui sont ensuite interprétées. par le serveur et ensuite envoyé au navigateur.
  • Après exécution, les résultats sont renvoyés au client
  • Le client et le serveur communiquent via le mécanisme normal HTTP GETS et POST.

Comme mentionné précédemment, Le Selenium RC prend en charge différents navigateurs, à la différence du Selenium IDE qui n’est disponible que pour Mozilla Firefox. L'inconvénient de Selenium RC est qu'il ne prend pas en charge les fonctionnalités d'enregistrement et de lecture, ce qui peut s'avérer essentiel dans l'automatisation des cas de test où les tâches sont répétitives, en particulier pour les tests de régression . Avant d'exécuter les tests à l'aide de Selenium RC, une instance du serveur Selenium RC doit être invoquée manuellement et cette instance doit être exécutée pendant tout votre cycle de test .

Selenium WebDriver

Nous savons que Selenium IDE est basé sur une interface graphique, où Selenium RC est un programme Java autonome qui vous permettra d’exécuter des suites de tests HTML. Le framework Selenium WebDriver est plus largement utilisé que Selenium IDE & Selenium RC. Contrairement à Selenium RC, qui repose sur le modèle client-serveur, la structure de Selenium WebDriver est implémentée via un pilote spécifique au navigateur, par exemple. chaque navigateur aura son application WebDriver correspondante sur laquelle les tests d'automatisation seront effectués.

Selenium WebDriver communique directement avec le navigateur, de sorte qu'il ne nécessite aucun composant séparé comme le serveur Selenium. Il prend en charge les principaux langages de programmation utiles pour un testeur de logiciel à savoir C #, Ruby, Java, Python, Perl, etc. Avant de poursuivre dans ce tutoriel sur Selenium WebDriver, veillez à télécharger le Selenium WebDriver pour le navigateur. quels tests de navigateur sont effectués. Vous pouvez télécharger Selenium WebDriver à partir des liens mentionnés ci-dessous:

Selenium Grid

Le test en série convient parfaitement lorsque le code est limité à quelques navigateurs, systèmes d'exploitation ou périphériques. Cependant, la méthodologie échoue une fois que les tests doivent être effectués dans un environnement comportant de multiples combinaisons. C'est là que les tests parallèles peuvent être extrêmement utiles, car ils peuvent accélérer le processus de test dans son ensemble. Les tests en parallèle peuvent vous permettre d'effectuer simultanément un scénario de test similaire dans différentes configurations de test. Vous pouvez également exécuter simultanément différents cas de test dans le même navigateur. Les tests en parallèle sont bien plus nombreux, mais cela peut détourner notre attention de Selenium WebDriver.

Retour aux sources: Selenium Grid est principalement utilisé pour les tests en parallèle car il permet de tester simultanément différents ordinateurs sur différents navigateurs et systèmes d'exploitation. . Il fait le travail en conjonction avec Selenium RC. Un exemple illustrant l'utilisation de Selenium Grid est présenté ci-dessous:

 à partir du WebDriver d'importation de sélénium
à partir de selenium.webdriver.common.keys import Keys

désiré_cap = {
'plateforme': 'win10',
'browserName': 'chrome',
'version': "67.0",
}

url = "https: // nom d'utilisateur: acsessToken @ {LMABDA GRID URL} / wd / hub"

driver = webdriver.Remote (
    désirés_capacités = désiréscap,
    command_executor = url
)

driver.implicitly_wait (1)
driver.get ("http://www.google.com/")
driver.quit ()

Architecture Selenium WebDriver

Découvrez les principaux blocs de l’architecture Selenium WebDriver:

  • Bibliothèques client Selenium
  • Protocole JSON Wire
  • Pilotes de navigateur
  • Navigateurs
  • Navigateurs

Nous allons examiner chacun composant plus en détail.

Bibliothèques clientes Selenium

Comme indiqué précédemment, les développeurs peuvent utiliser Selenium pour écrire du code de test dans différents langages tels que C #, Java, Python, Perl, etc. Le support multilingue est possible grâce à Selenium Bibliothèques clientes ou liaisons de langue Sélénium. Par exemple, si vous écrivez du code en Python, vous aurez besoin de bibliothèques clientes Python. Les pilotes Selenium Client pour différents langages de programmation peuvent être téléchargés à partir de ici .

Protocole JSON Wire

Le protocole JSON (notation d'objet JavaScript) facilite le transfert de données entre le client et le serveur. C'est l'API basée sur REST (Representational State Transfer). Chaque navigateur aura son propre pilote.

Pilotes de navigateur

Le pilote de navigateur est principalement utilisé pour communiquer avec les navigateurs. Étant donné que la logique interne du navigateur et ses fonctionnalités ne sont pas révélées, Browser Driver assure la couche d’encapsulation nécessaire pour que les détails du niveau d’exécution soient plus abstraits. Chaque navigateur a son pilote de navigateur correspondant.

Navigateurs

Les pilotes de navigateur étant disponibles pour les navigateurs courants tels que Chrome, Firefox, Internet Explorer, Safari et Microsoft Edge, vous pouvez les utiliser pour effectuer des tests inter-navigateurs. Il est à noter que vous ne pouvez pas tester un site Web sur un navigateur dont le pilote de navigateur n'est pas publiquement disponible.

 Selenium-WebDriver-Architecture-Diagram

Le test LambdaTest est désormais accessible en direct sur un nuage Selenium Grid

LambdaTest propose une grille Selenium Grid pour vous aider à suivre rapidement votre processus de test d'automatisation. Selenium Grid propose plus de 2000 navigateurs réels et versions de navigateurs fonctionnant sur de nombreux systèmes d'exploitation. Vous pouvez exécuter des tests en parallèle à l'aide de LambdaTest Selenium Grid sans vous soucier de l'installation d'une infrastructure lourde sur votre ordinateur local. De plus, vous disposez d'une grande variété de navigateurs pour optimiser la couverture de vos tests.

Le nombre de sessions en parallèle pouvant être exécutées dépend entièrement de la concurrence. sessions que vous avez choisi. Les tests parallèles peuvent vous aider à réduire considérablement vos cycles de test. Par exemple, supposons que vous disposiez d'une suite de tests qui prend 60 minutes sans tests en parallèle. Maintenant, si vous avez 2 concédences, vous pouvez exécuter 2 tests simultanément, en réduisant votre temps total de test à 30 minutes. De la même façon, si vous avez 3 concédences, la durée totale du test est réduite à 20 minutes. Utilisez la calculatrice de simultanéité LambdaTest pour calculer le nombre de sessions simultanées dont vous pourriez avoir besoin en fonction de votre suite de tests.

Selenium WebDriver In Action

Maintenant que vous connaissez les bases de Selenium et des pilotes de navigateur, il Il est temps que nous examinions un script WebDriver simple. Avant d'examiner cet exemple, assurez-vous que l'environnement de programmation est prêt (nous utilisons Eclipse avec tous les packages requis téléchargés à partir du Eclipse Marketplace ). Le plugin Selenium pour Eclipse peut être téléchargé ici . L'exemple de code a été écrit en langage Python, mais vous pouvez l'écrire en C #, Java, Perl, Ruby, etc.

Exemple pour Firefox WebDriver

Le code de test communiquant avec le navigateur (Chrome , Firefox, Internet Explorer, etc.), veuillez vous assurer que la bibliothèque client / WebDriver correspondante est installée sur votre ordinateur. Veuillez vous reporter à la section Pilotes de navigateur pour savoir comment télécharger le WebDriver correspondant.

Vous trouverez ci-dessous un exemple de code utilisant Selenium, Firefox WebDriver pour ouvrir une page Web:

 # Importez les modules nécessaires au développement.
temps d'importation
test unitaire d'importation
à partir du pilote Web d'importation de sélénium

# Invoquer une nouvelle instance de Firefox
ff_driver = webdriver.Firefox ()

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page requise
ff_driver.get ("http://www.lambdatest.com")

# Dormir pendant 10 secondes pour voir les résultats
heure (10)

# Fermer l'instance du navigateur
ff_driver.close ()

Passons en revue le code. Avant d’effectuer une action, tous les modules nécessaires sont importés à l’aide de la déclaration ‘ import ’ [Lines 2~4]. Dans le code de test, nous utilisons Firefox WebDriver puisque les tests sont effectués sur le navigateur Firefox [Line 7]. Dans le code, ff_driver est le descripteur WebDriver qui serait utilisé pour effectuer toute interaction avec le navigateur Firefox. Si WebDriver n’est pas installé ou si vous essayez d’utiliser un navigateur pour lequel il n’existe aucun support (via WebDriver), l’erreur suivante apparaît:

selenium.common.exceptions.WebDriverException : Message: l'exécutable 'operadriver' doit être dans PATH .

Le message d'erreur s'affichait lorsque nous avons essayé de charger le navigateur WebDriver pour Opera (sans que WebDriver soit installé sur la machine). Afin de supprimer l'erreur, vous devez installer WebDriver for Opera . .

Une fois toutes les opérations terminées sur le navigateur, vous devez invoquer ff_driver.close () . Pour effectuer le nettoyage nécessaire et libérer des ressources.

Pour exécuter le code, vous pouvez appeler Ctrl + F9 dans Eclipse IDE ou compiler le code à l'aide des options de ligne de commande Python:

 image6-1 [6]. 19659060] Exemple avec Chrome WebDriver</h3 data-recalc-dims=

Dans la section précédente de notre didacticiel sur Selenium WebDriver, nous utilisions Firefox WebDriver. Dans cette section, nous examinons les modifications requises si vous utilisez le navigateur Chrome pour les tests. Vous devez vous assurer que le binaire autonome ChromeDriver (qui est différent du binaire du navigateur Chrome) est disponible dans le bon chemin ou qu'il fait partie de la variable d'environnement webdriver.chrome.driver. Si vous utilisez Windows, vous devez d’abord télécharger le navigateur Web Chrome de ici . Collez ChromeDriver.exe à l'emplacement où vous avez installé Python (dans notre cas, il s'agissait du chemin d'installation par défaut, à savoir C: Python27 Scripts). Vous devez charger le WebDriver correspondant [Line 8] et le reste du code reste identique. Voici l'extrait de code, avec la modification (obligatoire pour Chrome WebDriver) mise en surbrillance dans une couleur différente:

 # Importez les modules nécessaires au développement.
temps d'importation
test unitaire d'importation
à partir du pilote Web d'importation de sélénium

# Invoquer une nouvelle instance de Chrome
ff_driver = webdriver.Chrome ()

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page requise
ff_driver.get ("http://www.lambdatest.com")

# Dormir pendant 10 secondes pour voir les résultats
heure (10)

# Fermer l'instance du navigateur
ff_driver.close ()

Exemple avec Internet Explorer WebDriver

Jusqu'à présent, dans notre didacticiel sur Selenium WebDriver, nous avons présenté des tests entre navigateurs en utilisant Firefox WebDriver et Chrome WebDriver. Dans cette section, nous examinons les modifications requises si vous utilisez le navigateur Chrome pour les tests. Vous devez télécharger le bon pilote Internet Explorer WebDriver (32 bits / 64 bits) depuis ici ou ici . Collez InternetExplorerDriver.exe à l'emplacement où vous avez installé Python (dans notre cas, il s'agissait du chemin d'installation par défaut, à savoir C: Python27 Scripts) ou de tout autre emplacement de votre choix. Si vous copiez le pilote InternetExplorer WebDriver dans le chemin où se trouve l’exécutable Python, vous ne devez pas mentionner le ‘chemin absolu’ lors du chargement du pilote Web [Line 7]. Dans l'autre cas, vous devez spécifier le chemin absolu [Line 9]. Vous trouverez ci-dessous l'extrait de code, avec la modification (obligatoire pour IE WebDriver), mis en évidence dans une couleur différente:

 # Importez les modules nécessaires au développement.
temps d'importation
test unitaire d'importation
à partir du pilote Web d'importation de sélénium

# Méthode 1 - Invoquer une nouvelle instance IE
ff_driver = webdriver.Ie ()
# Méthode 2 - Invoquer une nouvelle instance IE
ff_driver = webdriver.Ie ("chemin  vers  IEDriverServer.exe")

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page requise
ff_driver.get ("http://www.lambdatest.com")

# Dormir pendant 10 secondes pour voir les résultats
heure (10)

# Fermer l'instance du navigateur
ff_driver.close ()

Enfin, dans notre didacticiel Selenium WebDriver, nous allons examiner un autre exemple d'utilisation du module ActionChains, qui permet d'automatiser les interactions de bas niveau telles que les mouvements de souris, de boutons, de menu contextuel, etc. Conception de l'interface utilisateur . Vous trouverez plus de détails sur ActionChains ici .

 # Importez les modules nécessaires au développement
temps d'importation
importer unittest
depuis le webdriver d'importation de sélénium
à partir de selenium.webdriver.common.keys import Keys
depuis sélenium.webdriver import ActionChains

# Invoquer une nouvelle instance de Firefox
ff_driver = webdriver.Firefox ()

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page d'accueil
ff_driver.get ("https://www.lambdatest.com/")

# Recherchez l'élément de recherche et entrez les critères de recherche

search_criteria = ff_driver.find_element_by_link_text ("Assistance")
actionChains = ActionChains (ff_driver)
actionChains.context_click (search_criteria) .perform ()
temps.sommeil (5)

# Effectuer une action sur le lien images
ActionChains (ff_driver) 
    .key_down (Keys.CONTROL) 
    .click (search_criteria) 
    .key_up (Keys.CONTROL) 
    .effectuer()

# Dormir pendant 10 secondes pour voir les résultats
heure (10)

# Fermer l'instance du navigateur
ff_driver.close ()

Comme indiqué dans l'exemple de code ci-dessus, nous conservons le code permettant de créer l'instance de Firefox WebDriver [Lines 9~16]. Quelques nouveaux modules ont été importés – ActionChains et Keys . Une fois la page Web souhaitée, à savoir https://www.lambdatest.com/ ouverte par le navigateur, une opération de recherche est effectuée en consultant le texte du lien (à l'aide de la méthode find_element_by_link_text). Dans notre exemple, le texte du lien recherché sur la page Web est 'Support' [Lines 20~22].

Une fois que les critères de recherche sont rencontrés, une opération (CTRL + CLICK) est effectuée, ouvrant ainsi cette page dans une nouvelle Onglet '[Lines 26~30]. Le module ActionChains est utilisé pour effectuer cette opération. Le résultat est ci-dessous:

 2_ActionChains_WebDriver-Example-Output-1

Nous avons utilisé ActionChains car il était approprié pour l'exemple que nous avons présenté ci-dessus. Vous pouvez consulter les différents modules sous le module Selenium WebDriver (pour Python) ici . Bien que nous ayons utilisé le langage Python pour la mise en œuvre, vous pouvez utiliser le langage de programmation de votre choix (C #, Java, Perl, Ruby, PHP).

Local WebDriver – Approche peu évolutive

Test utilisant WebDriver local peut être utilisé dans le cas où vous envisagez de tester votre site Web sur un nombre limité de combinaisons 'navigateur + système d'exploitation + périphériques'. Cependant, l’approche peut échouer si le nombre de combinaisons est supérieur. Vous ne pouvez pas avoir une configuration locale pour chaque combinaison, car il ne s’agit pas d’une approche évolutive mais qui pourrait aussi s’avérer très coûteuse.

Une meilleure solution consisterait à exploiter les capacités d’une plate-forme comme LambdaTest pour effectuer des tests croisés. -browser test sur le cloud. LambdaTest vous permet de vérifier votre site Web sur plus de 2000 navigateurs, systèmes d’exploitation et configurations de périphériques différents. Pour commencer, vous devez créer un compte sur LambdaTest. Puisque vous utiliseriez Remote WebDriver (en utilisant Selenium Grid sur LambdaTest) pour tester votre application Web, vous devez noter le nom d'utilisateur et la clé d'accès de votre profil LambdaTest .

Exécution de Selenium Script à l'aide de WebDriver with LambdaTest

Maintenant que vous connaissez l’utilisation de Selenium WebDriver et les inconvénients potentiels de cette approche, nous examinons comment porter l’implémentation de WebDriver locale vers Remote WebDriver. Les principes fondamentaux de Remote WebDriver sont similaires à ceux de Local WebDriver, à la différence près que le code Remote WebDriver peut ne pas s'exécuter sur le même ordinateur à partir duquel il a été lancé. Remote WebDriver est basé sur le modèle client-serveur où le serveur est un simple servlet Java hébergé sur n'importe quel serveur d'applications JEE moderne. Le hub / serveur charge les tests à exécuter. Il reçoit les demandes de test de différents clients et, en fonction des besoins (appelés capacités souhaitées), il achemine la demande au client le mieux adapté / le mieux adapté.

Par exemple, si votre test doit être exécuté sur le système d'exploitation Ubuntu. + Chrome, le serveur / concentrateur analyserait les fonctionnalités des clients / nœuds enregistrés auprès du serveur et renverrait la demande au client doté de fonctionnalités correspondantes. Il ne peut y avoir qu'un seul serveur et un seul nombre de clients dans l'architecture Selenium Grid. Des informations plus détaillées sur l'API de pilote distant peuvent être obtenues sur d'autres blogs du site Web LambdaTest.

Une fois que vous êtes connecté à LambdaTest, vous devez générer les fonctionnalités requises par les nœuds en visitant Générateur de capacités LambdaTest . Choisissez votre langage de programmation préféré (dans notre cas, il s'agit de Python) et la combinaison OS / Navigateur appropriée. Vous pouvez activer les fonctionnalités de capture d'écran et d'enregistrement vidéo lors de la configuration des capacités. Comme indiqué ci-dessous, notre exigence est que le test soit exécuté sur Firefox (version 64.0), installé sur une machine Windows 10. Les capacités pour le besoin sont les suivantes:

 capacités = {
        "build": "Test de WebDriver à distance",
        "name": "Exemple de test de WebDriver Remote",
        "plate-forme": "Windows 10",
        "browserName": "Firefox",
        "version": "64.0",
    }

Ci-dessous se trouve la capture d'écran de LambdaTest Capabilities Generator:

 Lambdatest-Capabilities-Generator

Dans la mesure où nous utiliserions la grille Selenium sur le serveur LambdaTest, nous devons modifier notre code pour y accéder. leur infrastructure cloud (également appelée URL distante). L'URL distante est indiquée ci-dessous:

 / * nom_utilisateur - ID utilisateur pour la connexion à Lambdatest * /
/ * app_key - Jeton d'accès obtenu de Lambdatest * /
remote_url = "https: //" + nom_utilisateur + ":" + clé_app + + "@ hub.lambdatest.com / wd / hub"

@ hub.lambdatest.com / wd / hub est la configuration de la grille Selenium sur LambdaTest où le test serait exécuté. Pour les besoins de l'authentification de l'utilisateur, le nom d'utilisateur (utilisé pour l'enregistrement sur LambdaTest) et la clé d'application (jeton d'accès) sont ajoutés à l'URL de la grille. La chaîne concaténée forme remote_url. Maintenant que vous connaissez l’API WebDriver et le générateur de capacités, appelons notre exemple précédent pour répondre à ces exigences.

parallel_test_example-1.py

 import time
importer unittest
depuis le webdriver d'importation de sélénium
à partir de selenium.webdriver.common.keys import Keys
depuis sélenium.webdriver import ActionChains
importer urllib3

#Set capacités pour tester sur Firefox
ff_caps = {
        "build": "Test de WebDriver à distance",
        "name": "Exemple de test de WebDriver Remote",
        "plate-forme": "Windows 10",
        "browserName": "Firefox",
        "version": "64.0",
    }

nom d'utilisateur = ""
accessToken = ""

# gridUrl: gridUrl peut être trouvé dans le tableau de bord d'automatisation
gridUrl = "hub.lambdatest.com/wd/hub"

url = "https: //" + nom d'utilisateur + ":" + accessToken + "@" + gridUrl

# Invoquer une nouvelle instance de Firefox
#ff_driver = webdriver.Firefox ()

urllib3.disable_warnings (urllib3.exceptions.InsecureRequestWarning)
# Portage du WebDriver local vers le WebDriver distant sur le serveur LambdaTest
ff_driver = webdriver.Remote (
           command_executor = url,
           désirés_capacités = ff_caps
)

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page d'accueil
ff_driver.get ("https://www.lambdatest.com/")

# Recherchez l'élément de recherche et entrez les critères de recherche

# Nous commentons ce code car nous effectuons une vérification de base
# search_criteria = ff_driver.find_element_by_link_text ("Support")
# actionChains = ActionChains (ff_driver)
# actionChains.context_click (search_criteria) .perform ()

ff_driver.close ()
ff_driver.quit ()

Faisons le tour du code, en particulier les changements majeurs:

  • Le nom d’utilisateur & accessToken est ajouté à gridURL. La combinaison constitue l'URL distante sur laquelle l'exécution du scénario de test est effectuée.
  • L'API webdriver.Remote est utilisée à la place de l'API WebDriver locale. L'API WebDriver à distance a deux arguments – command_executor: configuration de la grille sur laquelle le test est effectué et "désirées-capacités": capacités / exigences souhaitées du noeud. En fonction de ces besoins en capacités, le noeud approprié sur lequel le code est exécuté est sélectionné.

Pour vérifier l'état du test, vous devez visiter votre tableau de bord LambdaTest . Vous pouvez rechercher le test via son nom de compilation utilisé pour la formation des capacités. Ci-dessous se trouve une capture d'écran du test ci-dessus exécuté sur la grille LambdaTest.

 Tableau de bord d'automatisation

Il existe diverses options dans le panneau de sortie qui peuvent être utiles lors du débogage. Ci-dessous quelques-unes des principales options.

  • Exception – Répertorie les exceptions rencontrées lors de l'exécution du code de test.
  • Journaux – Cet onglet affiche les journaux Sélénium. ainsi que les journaux de la console. Cela peut être très pratique pour déboguer votre code.
  • MetaData – Il contient des informations détaillées sur l'environnement de test sur lequel les tests ont été effectués. Dans notre cas, le test est exécuté sur Firefox 64.0 qui est installé sur la machine Windows 10. Vous pouvez même obtenir des détails sur la configuration du navigateur.

 Métadonnées

Test en parallèle – Accélérez vos cycles de test

Le test en parallèle est une fonctionnalité de LambdaTest qui peut accélérer tout votre processus de test. En fonction du modèle de tarification que vous avez choisi, vous pouvez exécuter simultanément des tests afin de réduire le temps d'exécution total des tests. Dans notre cas, nous pouvons avoir deux sessions simultanées. Plus le nombre de sessions simultanées est important, plus la durée totale d'exécution du test est courte.

 Concurrent Session

Pour illustrer le caractère de parallélisation, nous exécutons deux exécutions de test de manière simultanée. Parallèlement à l'exemple précédent (parallel_test_example-1.py), nous exécutons simultanément le deuxième test (parallel_test_example-2.py).

parallel_test_example-2.py

 temps d'importation
importer unittest
depuis le webdriver d'importation de sélénium
à partir de selenium.webdriver.common.keys import Keys
depuis sélenium.webdriver import ActionChains
importer urllib3

#Set capacités pour tester sur Chrome
ch_caps = {
        "build": "Test de WebDriver à distance",
        "name": "Exemple de test de WebDriver à distance sur Chrome",
        "plate-forme": "Windows 10",
        "browserName": "Chrome",
        "version": "71.0",
    }

nom d'utilisateur = ""
accessToken = ""

# gridUrl: gridUrl peut être trouvé dans le tableau de bord d'automatisation
gridUrl = "hub.lambdatest.com/wd/hub"

url = "https: //" + nom d'utilisateur + ":" + accessToken + "@" + gridUrl

# Invoquer une nouvelle instance de Firefox
#ff_driver = webdriver.Firefox ()

urllib3.disable_warnings (urllib3.exceptions.InsecureRequestWarning)
# Portage du WebDriver local vers le WebDriver distant sur le serveur LambdaTest
ff_driver = webdriver.Remote (
           command_executor = url,
           désirés_capacités = ch_caps
)

# Blocage d'attente de 30 secondes afin de localiser l'élément
ff_driver.implicitly_wait (30)
ff_driver.maximize_window ()

# Ouvrir la page d'accueil
ff_driver.get ("https://www.lambdatest.com/")

# Recherchez l'élément de recherche et entrez les critères de recherche

# Nous commentons ce code car nous effectuons une vérification de base
# search_criteria = ff_driver.find_element_by_link_text ("Support")
# actionChains = ActionChains (ff_driver)
# actionChains.context_click (search_criteria) .perform ()

ff_driver.close ()
ff_driver.quit ()

Exécutez les deux tests en parallèle sur deux terminaux différents en appelant la commande python.

 Résultat de l'automatisation

Voici la capture d'écran de LambdaTest Automation Logs où vous pouvez voir qu'il existe deux tests. Exécution en parallèle.

 Journaux d'automatisation

Conclusion

L'utilisation de l'API Remote WebDriver sur une infrastructure en nuage telle que LambdaTest présente de nombreux avantages, car elle accélère l'ensemble du processus de test. C'est aussi une approche hautement évolutive. En utilisant la parallélisation, c'est-à-dire la simultanéité, vous pouvez encore réduire le temps total consacré aux tests d'automatisation.




Source link