Maison > Périphériques technologiques > Industrie informatique > Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Lisa Kudrow
Libérer: 2025-02-15 11:08:12
original
896 Les gens l'ont consulté

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Cet article a été initialement publié sur Lambdatest. Merci de soutenir les partenaires qui rendent le point de point possible.

Sélénium est un cadre de test d'automatisation populaire qui est principalement utilisé pour les tests de navigateur croisé. Il est open source et est idéal pour automatiser les tests des applications Web à travers différents navigateurs comme Firefox, Chrome, Internet Explorer et Microsoft Edge. Le sélénium est devenu un cadre renommé et donne une forte concurrence à d'autres cadres de test tels que HP QTP (Quick Test Professional) et AKA HP UFT (test fonctionnel unifié). Ce didacticiel pour Selenium WebDriver vous aidera à développer une compréhension de base des composants de la suite Selenium, l'architecture Selenium WebDriver et vous montrera comment exécuter l'automatisation pour tester un site Web pour la compatibilité des navigateurs croisés à l'aide de Selenium Webdriver pour Google Chrome, Mozilla Firefox et Internet Explorer.

Sélénium est une combinaison de différents outils et chaque outil joue un rôle essentiel dans l'automatisation des tests Web. Plongeons-nous dans le tutoriel WebDriver.

Les plats clés

  • Comprendre les composants du sélénium: saisissez les rôles de la sélénium IDE, du webdriver, du grille et de la télécommande pour automatiser et gérer efficacement les tests de navigateur.
  • Utilisez WebDriver pour la communication directe du navigateur: découvrez comment le sélénium webdriver interagit directement avec le navigateur sans intermédiaire, ce qui le rend plus rapide et plus fiable pour l'automatisation du navigateur.
  • Implémentez les tests parallèles avec le scénario de sélénium: utilisez le réseau de sélénium pour l'exécution de tests en parallèle dans différents environnements, ce qui aide à réduire considérablement le temps d'exécution des tests.
  • Configurer et exécuter des tests sur Lambdatest: explorez comment utiliser la grille de sélénium Cloud de Lambdatest pour exécuter des tests à distance, permettant d'accéder à plusieurs versions de navigateur et systèmes d'exploitation sans infrastructure locale.
  • Gérer les scénarios de test pratiques: acquérir des informations sur l'écriture de scripts de sélénium pour gérer les scénarios de test du monde réel comme les fenêtres contextuelles, les éléments dynamiques et les appels Ajax en utilisant des attentes explicites et d'autres techniques de sélénium webdriver.
  • Optimiser les tests avec une exécution parallèle: tirer parti des tests parallèles sur des plates-formes comme Lambdatest pour minimiser le temps d'exécution des tests totaux, permettant à plus de tests d'être exécutés simultanément.

Composants de la suite de sélénium

Vous trouverez ci-dessous les composants centraux de la suite de test de sélénium:

  • Environnement de développement intégré de sélénium (IDE)
  • télécommande de sélénium (RC)
  • Sélénium webdriver
  • Grille de sélénium

Maintenant, jetons un coup d'œil à ces composants en détail, dans ce didacticiel Selenium WebDriver.

Environnement de développement intégré de sélénium (IDE)

Selenium IDE est un simple plugin Firefox et il est utilisé pour enregistrer et lire les scripts. Cependant, le sélénium IDE ne peut être utilisé que pour écrire des scripts d'automatisation pour automatiser les tests de cas d'utilisation simples. Le sélénium IDE ne prend pas en charge les déclarations conditionnelles, la gestion des exceptions, les boucles, la capture de capture d'écran, etc. Pour automatiser les cas d'utilisation complexes, la majorité des développeurs et des testeurs préfèrent opter pour des tests de script au lieu des tests d'enregistrement et de relecture. La suite de tests Selenium est composée de télécommande de sélénium (RC) ou de sélénium webdriver.

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

télécommande de sélénium (RC)

Pour tester des scénarios complexes, la télécommande de sélénium (RC) peut être utilisée. 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 de clients dans différents langages de programmation qui permettent aux développeurs d'écrire facilement des cas de test efficaces dans un langage de programmation dans lequel ils sont à l'aise et ont une expertise. Depuis la version 2.25.0, RC prend en charge Java, C #, Python, Perl, Ruby, etc.

Selenium Server est le composant central du Selenium RC. Certaines des caractéristiques / responsabilités de base du sélénium RC sont ci-dessous:

  • contient le cadre du sélénium central et il est principalement responsable de l'injection de la même chose dans le navigateur.
  • Le programme client envoie des commandes au RC qui sont ensuite interprétées par le serveur puis envoyées au navigateur.
  • Après l'exécution, les résultats sont renvoyés au client.
  • Le client et le serveur communiquent via le mécanisme normal de HTTP obtient et publics.

Comme mentionné précédemment, le Selenium RC prend en charge différents navigateurs, contrairement à 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 qui peuvent être vitales 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 devrait fonctionner tout au long de votre cycle de test.

Sélénium webdriver

Nous savons que le sélénium IDE est basé sur l'interface graphique, où Selenium RC est un programme Java autonome qui vous permettra d'exécuter des suites de test HTML. Le cadre de sélénium WebDriver est plus largement utilisé par rapport à Selenium IDE & Selenium RC. Contrairement à Selenium RC qui est basé sur le modèle client-serveur, Selenium WebDriver Framework est implémenté via un pilote spécifique au navigateur, par exemple Chaque navigateur aura son application WebDriver correspondante sur laquelle les tests d'automatisation seraient effectués.

Selenium WebDriver communique directement avec le navigateur, il ne nécessite donc aucun composant distinct comme le serveur Selenium. Il prend en charge les meilleurs langages de programmation utiles pour un testeur de logiciel à savoir C #, Ruby, Java, Python, Perl, etc. Avant d'aller de l'avant dans ce didacticiel Selenium WebDriver, assurez-vous de télécharger le sélénium webdriver pour le navigateur sur lequel les tests croisés croissants sont en cours effectué. Vous pouvez télécharger Selenium WebDriver à partir des liens mentionnés ci-dessous:

  • Firefox
  • chrome
  • Internet Explorer
  • Microsoft Edge

Grille de sélénium

Les tests en série sont très bien lors du test du code limité à quelques navigateurs, systèmes d'exploitation ou appareils. Cependant, la méthodologie vacille une fois que les tests doivent être effectués dans un environnement qui a plusieurs combinaisons. C'est là que les tests parallèles peuvent être extrêmement utiles, car il peut accélérer l'ensemble du processus de test. Les tests parallèles peuvent vous permettre d'effectuer un cas de test similaire sur différentes configurations de test, simultanément. Vous pouvez également exécuter simultanément différents cas de test dans le même navigateur. Il y a beaucoup plus à des tests parallèles, mais cela peut écarter notre objectif de Selenium WebDriver.

Retour aux bases: la grille de sélénium est principalement utilisée pour les tests parallèles car il aide à exécuter des tests sur différentes machines contre différents navigateurs et systèmes d'exploitation, simultanément. Il fait le travail en conjonction avec Selenium RC. Un exemple qui présente l'utilisation de la grille de sélénium est ci-dessous:

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Sélénium WebDriver Architecture

Jetez un œil aux principaux blocs qui composent l'architecture de Sélénium WebDriver:

  • Bibliothèques de clients de sélénium
  • JSON Wire Protocol
  • pilotes de navigateur
  • BROWNSERS

Examinons chaque composant plus en détail.

Bibliothèques de clients de sélénium

Comme mentionné précédemment, les développeurs peuvent utiliser le sélénium pour écrire du code de test dans différentes langues comme C #, Java, Python, Perl, etc. La prise en charge multi-langues est possible en raison des bibliothèques clients sélénium ou des liaisons de langage sélénium. Par exemple, si vous écrivez du code dans Python, vous auriez besoin de bibliothèques clients Python. Les pilotes de clients de sélénium pour différents langages de programmation peuvent être téléchargés à partir d'ici.

JSON Wire Protocol

JSON (Notation d'objet JavaScript) Le protocole de fil facilite le transfert des données entre le client et le serveur. Il s'agit de l'API basée sur le reste (transfert d'état de représentation). Chaque navigateur aura son propre pilote de navigateur.

pilotes de navigateur

Le pilote du navigateur est principalement utilisé pour communiquer avec les navigateurs. Étant donné que la logique interne du navigateur et sa fonctionnalité ne sont pas révélées, le pilote du navigateur assure la couche nécessaire de «encapsulation» afin de maintenir les détails du niveau d'exécution plus abstraits. Chaque navigateur a son pilote de navigateur correspondant.

BROWNSERS

Étant donné que les pilotes de navigateur sont disponibles pour les navigateurs populaires comme Chrome, Firefox, Internet Explorer, Safari et Microsoft Edge, vous pouvez en utiliser n'importe lequel pour effectuer des tests de navigateur croisé. Il convient de noter que vous ne pouvez pas effectuer des tests de navigateur croisé d'un site Web sur un navigateur dont le pilote de navigateur n'est pas accessible au public.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Lambdatest est maintenant en direct avec une grille de sélénium sur nucloude

Lambdatest propose une grille de sélénium sur le nuage pour vous aider à suivre accélérer votre processus de test d'automatisation. La grille de Selenium propose plus de 2000 navigateurs réels et versions de navigateur fonctionnant sur de nombreux systèmes d'exploitation. Vous pouvez exécuter des tests parallèles à l'aide de la grille de sélénium lambdatest sans vous soucier d'installer une infrastructure lourde sur votre machine locale, et vous obtenez une grande variété de navigateurs pour maximiser votre couverture de test.

Le nombre de sessions parallèles que vous pouvez exécuter dépend entièrement des sessions simultanées pour lesquelles vous avez opté. Les tests parallèles peuvent vous aider à réduire considérablement vos cycles de test. Par exemple, disons que vous avez une suite de test qui prend 60 minutes sans test parallèle. Maintenant, si vous avez 2 concurrences, vous pouvez exécuter 2 tests simultanément, en réduisant votre temps de test total à 30 minutes. De même, si vous avez 3 concurrences, le temps de test total coupe plus à 20 minutes. Utilisez la calculatrice de concurrence lambdatest pour calculer le nombre de sessions simultanées dont vous pourriez avoir besoin en fonction de votre suite de test.

Sélénium webdriver en action

Maintenant que vous êtes conscient des bases des pilotes de sélénium et de navigateur, il est temps que nous regardions un simple script WebDriver. Avant de regarder l'exemple, assurez-vous d'avoir l'environnement de programmation prêt (nous utilisons Eclipse avec tous les packages requis téléchargés à partir du marché Eclipse). Le plugin Selenium pour Eclipse peut être téléchargé ici. L'exemple de code a été écrit dans la langue Python, mais vous pouvez écrire le code de test en C #, Java, Perl, Ruby, etc.

Firefox WebDriver Exemple

Étant donné que le code de test communiquera avec le navigateur (Chrome, Firefox, Internet Explorer, etc.), veuillez vous assurer que la bibliothèque client / webdriver correspondante est installée dans votre machine. Veuillez référer les pilotes du navigateur de la section sur la façon dont vous pouvez télécharger le webdriver correspondant.

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

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

traversons le code. Avant d'effectuer une action, tous les modules nécessaires sont importés à l'aide de l'instruction « import » [lignes 2 ~ 4]. Dans le code de test, nous utilisons le Firefox WebDriver car les tests sont effectués contre le navigateur Firefox [ligne 7]. Dans le code, FF_DRIVER est la poignée WebDriver qui serait utilisée pour effectuer toute interaction avec le navigateur Firefox. Dans le cas où vous n'avez pas installé le webdriver ou que vous essayez d'utiliser un navigateur pour lequel il n'y a pas de support (via WebDriver), il donnerait l'erreur ci-dessous:

Selenium.Common.Exception.WebdriveRexception: Message: «OPERRADRIVER» doit être sur le chemin.

Le message d'erreur a été affiché lorsque nous avons essayé de charger le webdriver pour le navigateur d'opéra (sans que leDriver Web soit installé sur la machine). Afin de vous débarrasser de l'erreur, vous devez installer le webdriver pour l'opéra.

Une fois que toutes les opérations sur le navigateur sont terminées, ff_driver.close () est invoquée afin de faire les ressources de nettoyage et de libération nécessaires.

Afin d'exécuter le code, vous pouvez invoquer Ctrl F9 dans Eclipse IDE ou compiler le code à l'aide d'options de ligne de commande Python:

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Chrome WebDriver Exemple

La section précédente de notre tutoriel Selenium WebDriver, nous avons utilisé le Firefox WebDriver. Dans cette section, nous examinons les modifications nécessaires au cas où vous utilisez le navigateur Chrome pour les tests. Vous devez vous assurer que le binaire chromédriver autonome (qui est différent du binaire du navigateur Chrome) est disponible dans le bon chemin ou il est présent dans le cadre de la variable d'environnement WebDriver.Chrome.Driver. Si vous utilisez Windows, vous devez d'abord télécharger le Chrome WebDriver à partir d'ici. Collez chromedriver.exe à l'emplacement où vous avez installé Python (dans notre cas, c'était le chemin d'installation par défaut, c'est-à-dire C: Python27Scripts). Vous devez charger le webdriver correspondant [ligne 8] et le reste du code reste le même. Vous trouverez ci-dessous l'extrait de code, avec le changement (requis pour Chrome WebDriver) mis en évidence dans une couleur différente:

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

EXEMPLE DUDIVER ENTERNET INTERNET INTERNET

Jusqu'à présent, dans notre didacticiel Selenium WebDriver, nous avons démontré des tests de navigateur croisé à l'aide du Firefox WebDriver & Chrome WebDriver. Dans cette section, nous examinons les modifications nécessaires au cas où vous utilisez le navigateur Chrome pour les tests. Vous devez télécharger le bondriver Internet Explorer Internet (32 bits / 64 bits) d'ici ou d'ici. Collez InternetExplorerDriver.exe à l'emplacement où vous avez installé Python (dans notre cas, c'était le chemin d'installation par défaut, c'est-à-dire C: Python27Scripts) ou tout autre emplacement de votre choix. Si vous copiez InternetExplorer WebDriver dans le chemin où Python Exécutable est présent, vous devez ne pas mentionner le «chemin absolu» lors du chargement du pilote Web [ligne 7]. Dans l'autre cas, vous devez spécifier le chemin absolu [ligne 9]. Vous trouverez ci-dessous l'extrait de code, avec le changement (requis pour IE WebDriver), mis en évidence d'une couleur différente:

<span># Import the necessary modules for development
</span><span>import time
</span><span>import unit test
</span><span>from selenium import web driver
</span>
<span># Invoke a new Firefox Instance
</span>ff_driver <span>= webdriver.Firefox()
</span>
<span># Blocking wait of 30 seconds in order to locate the element
</span>ff_driver<span>.implicitly_wait(30)
</span>ff_driver<span>.maximize_window()
</span>
<span># Open the required page
</span>ff_driver<span>.get("http://www.lambdatest.com")
</span>
<span># Sleep for 10 seconds in order to see the results
</span>time<span>.sleep(10)
</span>
<span># Close the Browser instance
</span>ff_driver<span>.close()
</span>
Copier après la connexion
Copier après la connexion

Enfin, dans notre didacticiel Selenium WebDriver, nous allons jeter un coup d'œil à un autre exemple où nous utilisons le module ActionChains qui est utilisé pour automatiser les interactions de bas niveau comme les mouvements de la souris, les mouvements de bouton, les interactions de menu contextuel, etc. pour assurer un robuste Conception de l'interface utilisateur. Plus de détails sur les chains d'action peuvent être trouvés ici.

<span># Import the necessary modules for development
</span><span>import time
</span><span>import unit test
</span><span>from selenium import web driver
</span>
<span># Invoke a new Chrome Instance
</span>ff_driver <span>= webdriver.Chrome()
</span>
<span># Blocking wait of 30 seconds in order to locate the element
</span>ff_driver<span>.implicitly_wait(30)
</span>ff_driver<span>.maximize_window()
</span>
<span># Open the required page
</span>ff_driver<span>.get("http://www.lambdatest.com")
</span>
<span># Sleep for 10 seconds in order to see the results
</span>time<span>.sleep(10)
</span>
<span># Close the Browser instance
</span>ff_driver<span>.close()
</span>
Copier après la connexion

Comme le montre l'exemple de code ci-dessus, nous conservons le code de création de l'instance Firefox WebDriver [lignes 9 ~ 16]. Il y a quelques nouveaux modules importés - les chaînes d'action et les clés. Une fois que la page Web souhaitée, c'est-à-dire https://www.lambdatest.com/, est ouverte par le navigateur, une opération de recherche est effectuée en regardant le texte du lien (en utilisant la méthode find_element_by_link_text). Dans notre exemple, le texte du lien qui est recherché sur la page Web est «Prise en charge» [lignes 20 ~ 22].

Une fois les critères de recherche rencontrés, une opération (Ctrl Click) est effectuée, ouvrant ainsi cette page dans un «nouvel onglet» [lignes 26 ~ 30]. Le module ActionChains est utilisé pour effectuer cette opération. La sortie est ci-dessous:

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Nous avons utilisé des chains d'action car il était apte à l'exemple que nous avons présenté ci-dessus. Vous pouvez consulter les différents modules du 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 (C #, Java, Perl, Ruby, PHP) de votre choix.

Lecteur Web local - approche pas si échecable

Les tests à l'aide du WEBDriver local peuvent être utilisés au cas où vous prévoyez de tester votre site Web sur un nombre limité de «dispositifs de système d'exploitation de navigateur». Cependant, l'approche peut vaciller si le nombre de combinaisons est plus. Vous ne pouvez pas avoir une configuration locale pour chaque combinaison car ce n'est pas une approche évolutive et pourrait également s'avérer très coûteux.

Une meilleure solution serait de tirer parti des capacités d'une plate-forme comme Lambdatest où vous pouvez effectuer des tests croisés sur le cloud. À l'aide de Lambdatest, vous pouvez vérifier votre site Web sur 2000 navigateurs différents, systèmes d'exploitation et configurations de périphériques. Pour commencer, vous devez créer un compte sur Lambdatest. Étant donné que vous utiliseriez le webdriver distant (en utilisant le scénario de Selenium sur Lambdatest) pour tester votre application Web, vous devez noter le nom d'utilisateur et la clé d'accès à partir de votre profil lambdatest.

Exécution du script sélénium à l'aide d'un webdriver distant avec Lambdatest

Maintenant que vous connaissez l'utilisation de Selenium WebDriver et les lacunes potentielles de l'utilisation de cette approche, nous examinons comment vous pouvez porter votre implémentation locale de webdriver sur un webdriver distant. Les principes principaux de WEBDriver distant sont similaires à un webdriver local, sauf que le code WebDriver distant peut ne pas s'exécuter sur la même machine à partir de l'endroit où il est initié. 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 qui doivent être exécutés. Il reçoit des demandes de test de différents clients et en fonction des exigences (qualifiées de capacités souhaitées), il achemine la demande au client le mieux correspondant / le mieux ajusté.

Par exemple, si votre test doit être exécuté sur Ubuntu OS Chrome, le serveur / hub franchirait les capacités des clients / nœuds enregistrés auprès du serveur et détournerait la demande vers le client avec des capacités de correspondance. Il ne peut y avoir qu'un seul serveur et un nombre de clients dans l'architecture de la grille Selenium. Des informations plus détaillées sur l'API de pilote distant peuvent être obtenues sur d'autres blogs sur le site Web de Lambdatest.

Une fois que vous êtes connecté à Lambdatest, vous devez générer les capacités requises par les nœuds en visitant le générateur de capacités lambdatest. Choisissez votre langage de programmation préféré (dans notre cas, c'est 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 définition des capacités. Comme indiqué ci-dessous, notre exigence est que le test devrait s'exécuter sur Firefox (version 64.0) qui est installé sur une machine Windows 10. Les capacités de l'exigence sont ci-dessous:

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous trouverez ci-dessous la capture d'écran du générateur de capacités lambdatest:

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Puisque nous utiliserions la grille de sélénium sur le serveur Lambdatest, nous devons modifier notre code pour accéder à leur infrastructure cloud (également appelée URL distante). L'URL distante est illustrée ci-dessous:

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

@ hub.lambdatest.com / wd / hub est la configuration de la grille de sélénium sur Lambdatest où le test serait exécuté. À des fins d'authentification utilisateur, le user_name (utilisé pour l'enregistrement sur Lambdatest) & App_Key (Access-Token) est annexé à l'URL de la grille. La chaîne concaténée forme le Remote_url. Maintenant que vous êtes conscient de l'API WebDriver et du générateur de capacités distant, portons notre exemple précédent pour répondre à ces exigences.

parallel_test_example-1.py

<span># Import the necessary modules for development
</span><span>import time
</span><span>import unit test
</span><span>from selenium import web driver
</span>
<span># Invoke a new Firefox Instance
</span>ff_driver <span>= webdriver.Firefox()
</span>
<span># Blocking wait of 30 seconds in order to locate the element
</span>ff_driver<span>.implicitly_wait(30)
</span>ff_driver<span>.maximize_window()
</span>
<span># Open the required page
</span>ff_driver<span>.get("http://www.lambdatest.com")
</span>
<span># Sleep for 10 seconds in order to see the results
</span>time<span>.sleep(10)
</span>
<span># Close the Browser instance
</span>ff_driver<span>.close()
</span>
Copier après la connexion
Copier après la connexion

faisons une procédure pas à pas de code, en particulier les principaux changements:

  • Le nom d'utilisateur et AccessToken sont annexés au gridurl. La combinaison forme l'URL distante sur laquelle l'exécution du cas de test est effectuée.
  • L'API WebDriver.Remote est utilisée à la place de l'API WebDriver locale. L'API WebDriver distante a deux arguments - Command_executor: Configuration de la grille sur laquelle le test est effectué et souhaité_capabilités: capacités / exigences souhaitées du nœud. En fonction de ces exigences de capacités, le nœud approprié est sélectionné sur lequel le code est exécuté.

Afin de vérifier l'état du test, vous devez visiter votre tableau de bord lambdatest. Vous pouvez rechercher le test via son nom de construction qui est utilisé dans la formation des capacités. Une capture d'écran du test ci-dessus en cours d'exécution sur la grille lambdatest est ci-dessous.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Il existe différentes options sur le panneau de sortie qui peuvent être instrumentales lors de la débogage. Certaines des principales options sont ci-dessous.

  • Exception - répertorie les exceptions rencontrées lors de l'exécution du code de test.
  • Journaux - Cet onglet affiche les journaux de sélénium ainsi que les journaux de console. Il peut être très pratique pour déboguer votre code.
  • Métadonnées - 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.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Test parallèle - accélérez vos cycles de test

Une fonctionnalité sur Lambdatest qui peut accélérer l'ensemble de votre processus de test est les tests parallèles. Sur la base du modèle de tarification pour lequel vous optez, vous pouvez exécuter simultanément des tests afin que le temps d'exécution global des tests soit réduit. Dans notre cas, nous pouvons avoir deux séances simultanées. Plus les séances sont simultanées, plus le temps d'exécution du test total est court.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Pour démontrer la caractéristique de la parallélisation, nous effectuons deux exécutions de tests simultanément. Avec l'exemple précédent (parallel_test_example-1.py), nous exécutons le deuxième test (parallel_test_example-2.py) simultanément avec lui.

parallel_test_example-2.py

<span>from selenium import webdriver
</span><span>from selenium.webdriver.common.keys import Keys
</span>
desired_cap <span>= {
</span><span>'platform' : 'win10',
</span><span>'browserName' : 'chrome',
</span><span>'version' :  "67.0",
</span><span>}
</span>
url <span>= "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
</span>
driver <span>= webdriver.Remote(
</span>    desired_capabilities<span>=desired_cap,
</span>    command_executor<span>= url
</span><span>) 
</span>
driver<span>.implicitly_wait(1)
</span>driver<span>.get("http://www.google.com/")
</span>driver<span>.quit()
</span>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exécutez les deux tests en parallèle sur deux bornes différentes en invoquant la commande python.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Vous trouverez ci-dessous la capture d'écran des journaux d'automatisation lambdatest où vous pouvez voir qu'il y a deux tests s'exécuter en parallèle.

Comment utiliser lediteur Web Selenium pour les tests de navigateur croisé

Conclusion

Il y a un nombre d'avantages à utiliser l'API WebDriver distant sur une infrastructure cloud comme Lambdatest car il accélère l'ensemble du processus de test. C'est également une approche très évolutive. En utilisant la concurrence, c'est-à-dire la parallélisation, vous pouvez réduire davantage le temps global passé dans les tests d'automatisation.

Questions fréquemment posées (FAQ) sur Selenium WebDriver pour les tests de navigateur transversal

Quelles sont les conditions préalables à la configuration de Selenium WebDriver pour les tests de navigateur transversal?

Avant de configurer Selenium WebDriver pour les tests croisés, vous devez avoir certaines conditions préalables en place. Premièrement, vous devez avoir une compréhension de base du langage de programmation que vous utiliserez pour rédiger des scripts de test. Selenium prend en charge plusieurs langues comme Java, Python, C #, Ruby, etc. Deuxièmement, vous devez installer la bibliothèque WebDriver Selenium pour la langue choisie. Troisièmement, vous devez installer les pilotes du navigateur pour les navigateurs sur lesquels vous souhaitez tester. Enfin, vous devez avoir un cadre de test comme Testingng ou Junit pour Java, ou Unittest ou Pytest pour Python, pour gérer vos cas de test.

Comment puis-je gérer les éléments Web dynamiques à l'aide de Sélénium Webdriver?

La gestion des éléments Web dynamiques peut être difficile dans Selenium WebDriver. Cependant, vous pouvez utiliser diverses stratégies pour y faire face. Une méthode courante consiste à utiliser la fonctionnalité d'attente explicite de Selenium. Cela permet à votre script de s'arrêter pendant un certain temps jusqu'à ce qu'une condition spécifique soit remplie, comme la présence de l'élément dans le DOM. Une autre méthode consiste à utiliser des sélecteurs XPath ou CSS avec des caractères génériques pour correspondre à la partie dynamique des attributs de l'élément.

Comment puis-je exécuter des tests parallèles à l'aide de Selenium Webdriver pour une exécution plus rapide?

Pour exécuter des tests parallèles Dans Selenium WebDriver, vous pouvez utiliser un cadre de test qui prend en charge l'exécution parallèle, comme TestNg ou Pytest. Dans TestNg, vous pouvez définir l'attribut parallèle dans la balise Suite dans votre fichier Testng.xml sur des méthodes ou des tests, et spécifier l'attribut de comptoir thread au nombre de threads que vous souhaitez utiliser. Dans PyTest, vous pouvez utiliser le plugin PyTest-XDist et spécifier le nombre de processus dans la ligne de commande avec l'option -N.

Comment puis-je gérer les fenêtres ou les alertes contextuelles à l'aide de Selenium WebDriver?

Selenium WebDriver fournit l'interface d'alerte pour gérer les fenêtres ou les alertes contextuelles. Vous pouvez passer à l'alerte à l'aide de la méthode Switchtto (). Alert (), puis utiliser les méthodes accepter (), rejeter (), getText () ou SendKeys () pour interagir avec l'alerte. N'oubliez pas de revenir à la fenêtre principale après la manipulation de l'alerte.

Comment puis-je prendre des captures d'écran des défaillances de test à l'aide de Selenium WebDriver?

Ledriver Web de Selenium fournit l'interface Takesscreenshot pour capturer les captures d'écran. Vous pouvez utiliser la méthode getScreenshotas () pour prendre une capture d'écran et l'enregistrer dans un fichier. Vous pouvez appeler cette méthode dans le bloc Catch d'une instruction TRY-Catch ou dans la méthode Aftertest de votre cadre de test pour capturer des captures d'écran des échecs de test.

Comment puis-je gérer les menus déroulants à l'aide de Selenium WebDriver?

Selenium WebDriver fournit la classe sélectionnée pour interagir avec les menus déroulants. Vous pouvez créer un objet de la classe Select en passant l'élément déroulant à son constructeur. Ensuite, vous pouvez utiliser les méthodes SelectByVisibleText (), SelectByValue () ou SelectByIndex () pour sélectionner une option. Vous pouvez également utiliser la méthode getOptions () pour obtenir toutes les options dans la liste déroulante.

Comment puis-je gérer les iframes à l'aide de Selenium webDriver?

Selenium WebDriver vous permet de passer à IFRAMES à l'aide du commutateur ( ) .frame () Méthode. Vous pouvez transmettre l'index, le nom ou l'ID, ou l'élément iframe à cette méthode. Après avoir interagi avec l'IFRAME, n'oubliez pas de revenir à la fenêtre principale à l'aide de la méthode Switchtto (). DefaultContent ().

Comment puis-je gérer les cookies à l'aide de Selenium WebDriver?

Selenium WebDriver fournit des méthodes de méthodes pour interagir avec les cookies. Vous pouvez utiliser la méthode addcookie () pour ajouter un cookie, la méthode getcookienamed () pour obtenir un cookie spécifique, la méthode getcookies () pour obtenir tous les cookies et les méthodes DeleteCookie (), DeleteCookIenamed (), ou DeleTeAlLcookies () pour Supprimer les cookies.

Comment puis-je gérer les appels AJAX à l'aide de Selenium WebDriver?

Gestion des appels AJAX dans lediteur Web Selenium peut être délicat car ils sont asynchrones et peuvent prendre un certain temps pour obtenir les données. Vous pouvez utiliser une attente explicite avec les conditions attendues pour attendre la fin de l'appel AJAX et les données sont chargées.

Comment puis-je gérer les événements du clavier et de la souris à l'aide de Selenium WebDriver?

Selenium WebDriver fournit les actions des actions classe pour gérer les événements de clavier et de souris. Vous pouvez créer un objet de la classe Actions et utiliser ses méthodes comme Click (), DoubleClick (), ContextClick (), DragandDrop (), KeyDown (), KeyUp (), etc., pour simuler diverses actions de clavier et de souris.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal