Architecture Webdriver Selenium : la plupart des débutants ne savent pas

Nous allons commencer par Tutoriel Selenium Livre noir dans une approche exhaustive et différente, Dans ce premier segment du tutoriel Selenium, nous aborderonsArchitecture Selenium Webdriver, qu'est-ce que Selenium Webdriver, présentation de Selenium Webdriver, brève histoire du sélénium, avantages du sélénium, limitations du sélénium, composants du sélénium et quelques questions fréquemment posées.

Qu'est-ce que Selenium Webdriver

Selenium est une technologie ou un framework open source à travers lequel nous pouvons automatiser les applications Web. Selenium prend en charge les tests multi-navigateurs, plusieurs langages comme Java, Ruby, Perl, Python sont également pris en charge. Il prend en charge différentes plates-formes multiples telles que Windows, Linux, macOS, etc. dans le cadre de la plate-forme.

Bref historique sur le sélénium:

Le sélénium a été initialement développé à partir d'un outil interne par Jason Huggins en 2004 à ThoughtWorks.

Plus tard dans l'année 2007, Huggins a rejoint l'organisation Google, et avec d'autres comme Jennifer Bevan, il a continué avec la conception et le développement de l'une des variantes initiales de Selenium appelée Sélénium RC. Au cours d'une période similaire, une autre personne nommée Simon Stewart de ThoughtWorks a développé un outil avancé d'automatisation de navigateur Web sous le nom de WebDriver. 

En 2008, une personne nommée Philippe Hanrigou de ThoughtWorks a proposé des concepts d'automatisation à distance connus sous le nom de «Selenium Grid».

En 2009, lors de la conférence Google Test Automation, il a été décidé de fusionner les deux projets et de leur donner le nom de Selenium WebDriver, ou Selenium 2.0.

Avantages de Selenium Webdriver:

A. Open Source:

Selenium est une technologie / cadre open source, par conséquent, un énorme soutien de la communauté est disponible là où la portée de développement et d'amélioration est rapide et vaste, également en tant que source ouverte, vous pouvez implémenter toute fonctionnalité spécifique dont vous avez besoin dans le cadre de votre travail et contribuer à l'Open communauté source. 

B. Langage de programmation multi pris en charge:

Selenium est pris en charge par des langues largement utilisées; il propose différentes liaisons de langage de programmation, vous pouvez donc choisir votre langage favorable pour travailler avec le sélénium selon vos besoins et votre expertise.

Selenium prend en charge les langages de programmation ci-dessous: 

  • Java 
  • C#
  • Perl
  • python
  • Rubi  
  • javascript

C. Indépendant de la plateforme:

Selenium est indépendant de la plate-forme, vous pouvez donc automatiser vos applications Web sur n'importe quelle plate-forme et n'importe quel système d'exploitation, à savoir Windows, Linux, macOS, etc.

D. Capacité de test entre navigateurs

Selenium prend en charge la capacité de test inter-navigateurs pour vos applications Web; vous pouvez exécuter votre suite de tests écrite avec Selenium dans plusieurs navigateurs tels que Firefox, Chrome, IE, Safari etc.

E. Capacité de test multi-appareil

Selenium Test Automation est utilisé pour l'automatisation des tests d'applications Web mobiles sur divers appareils tels qu'Android, IOS. 

F. Exécution à distance ou cloud:

Selenium GRID vous offre la possibilité d'exécuter et de contrôler le script de test d'automatisation de votre application Web dans le cloud en faisant d'un système le nœud maître et un autre système en tant que nœud esclave, les nœuds esclaves se connectent à un nœud maître et le nœud maître surveille l'esclave nœuds, donc vos tests sont dans différents nœuds esclaves avec le système d'exploitation différent et différents navigateurs tels que Chrome, Firefox, Internet Explorer etc.

G. Capacité de test parallèle:

Avec Selenium, vous pouvez obtenir des capacités de test automatisé en parallèle, c'est-à-dire que vous pouvez exécuter votre script de test ou des cas de test d'automatisation dans le même navigateur ou le même navigateur et un système d'exploitation différent ou identique en parallèle. Cette fonctionnalité vous aide à réduire le temps d'exécution de toute la suite de tests d'automatisation dont vous disposez, et vous pouvez également tester la faisabilité et la compatibilité de votre application Web avec plusieurs systèmes d'exploitation et plusieurs navigateurs en parallèle.   

H. Compatibilité avec plusieurs frameworks et outils et technologies tiers

Le framework Selenium peut être facilement intégré à plusieurs technologies et frameworks tiers tels que différents frameworks de test unitaire, c'est-à-dire Tester, JUnit, MbUnit, Nunit etc. etc., différents outils de build tels que Ant, Maven, Gradle etc., des outils d'intégration continue, c'est-à-dire Jenkins, différents outils de gestion de test tels que Jira, testlink etc., divers outils de reporting tels que Allure, Extent Rapport etc...

Exécution du navigateur sans tête: 

Selenium Webdriver prend en charge le pilote de navigateur sans tête pour une l'exécution des cas de test, où tous vos cas de test d'automatisation s'exécutent en mode navigateur sans tête, c'est-à-dire qu'aucun navigateur ne s'ouvre et que l'exécution devient ultra-rapide afin que vous puissiez terminer rapidement vos scripts de test et les fonctionnalités en cas de publication et de validation urgentes.

Vous pouvez essentiellement utiliser html Pilote d'unité or pilote fantôme pour l'exécution sans tête avec Selenium.  

Inconvénients du sélénium:

  • Support d'application natif/basé sur Windows, non présent : 
    • Selenium est utilisé pour l'automatisation des applications Web Bade, mais il ne prend pas en charge les applications natives ou les applications basées sur Windows.
  • Automatisation complète basée sur l'image : 
    • Selenium ne fournit pas de support exhaustif pour l'automatisation des problèmes ou des applications basés sur des images, bien que nous puissions utiliser certains outils tiers tels que Sikuli, des solutions basées sur tesseract ocr qui peuvent être intégrées à Selenium pour faire le travail lié aux validations / opérations d'image ou extractions et validations de données d'image, elles présentent également des limitations telles que vous pouvez rencontrer des problèmes avec les tests parallèles, l'identification des documents manuscrits et la validation de ceux en cours d'automatisation de votre application s'il existe de tels cas d'utilisation.
  • Intégration avec des outils tiers : 
    • L'un des inconvénients de l'intégration avec plusieurs outils tiers avec du sélénium est que votre script d'automatisation peut parfois devenir plus lent.
  • Cadre de sélénium Développement :
    • La conception et le développement d'un cadre d'automatisation de test avancé avec Selenium nécessitent une grande expertise sur le sélénium et il n'est pas trop simple de créer un cadre d'automatisation avec plusieurs outils avec Selenium.
  • Problèmes spécifiques au navigateur : 
    • Vous pouvez rencontrer des problèmes spécifiques au navigateur lorsque vous travaillez avec Selenium, en particulier avec IE, parfois vous ne pourrez pas gérer des actions Web telles que cliquer, envoyer des clés, etc., et le navigateur peut devenir mort. Par conséquent, vous devez avoir des connaissances avancées pour gérer ces domaines tout en automatisant l'application construite sur Bootstrap JS et en l'exécutant sur le navigateur IE.
    • En outre, vous pouvez rencontrer des problèmes de compatibilité de navigateur avec les versions de Selenium Webdriver; vous devez vous assurer que vous utilisez Firefox, Chrome ou tout autre navigateur compatible avec la version de Selenium Webdriver.
  • Pas de support officiel : 
    • Comme tous les autres outils Open Source, le sélénium est également un outil open-source, ce qui signifie que vous n'aurez pas de support officiel pour vos problèmes comme tous les outils payants, même s'il existe un support communautaire très important, vous pouvez travailler avec eux avec votre énoncé de problème. , mais cela peut prendre beaucoup de temps.

Composants de sélénium: 

Le sélénium en tant qu'outil a les composants mentionnés ci-dessous, qui sont: 

IDE sélénium :

  • L'environnement de développement intégré Selenium IDE ou Selenium est la version la plus initiale de Selenium pour l'automatisation des applications Web.
  • Selenium IDE est une sorte d'outil d'enregistrement et de lecture, que vous pouvez utiliser comme plugin du navigateur et enregistrer votre action Web, vos applications et qui peut être sauvegardé en tant que script et plus tard, vous pouvez exécuter le même script enregistré pour exécuter et faire validations.
  • Mais il a quelques limitations telles que:
    • Vous devez exécuter le script enregistré, modifier le script n'est pas si flexible ou vous ne pouvez pas non plus concevoir votre cas d'utilisation et vos scripts dans votre propre approche indépendante.
    • L'exécution est très lente par nature.
    • Prend principalement en charge Firefox, bien que vous puissiez effectuer certaines modifications pour exécuter le script enregistré dans d'autres navigateurs tels que Google Chrome.
    • l'exécution parallèle n'est pas prise en charge.
    • Les tests mobiles ne sont pas pris en charge.
    • La génération de rapports n'est pas bonne.
  • C'est en fait une version très préliminaire de Selenium, en utilisant cela, vous pouvez faire une automatisation de test très limitée pour vos applications Web.

Sélénium RC

  • Selenium Remote Control est la prochaine version de Selenium et est très souvent appelée Selenium 1.0.

Comment Selenium RC fonctionne en interne:

Selenium RC se compose de deux composants principaux, tels que Selenium Server, Selenium Client.

Le serveur Selenium lance les navigateurs et exécute les commandes sélénium que vous avez écrites sous forme de script d'automatisation de test à l'aide des bibliothèques clientes Selenium disponibles dans différentes langues.

Selenium Server convertit les commandes / scripts de test en quelque chose appelé commandes Selenese, et agit comme un proxy HTTP.

Selenium Server interagit avec le moteur du navigateur Web et exécute l'opération Web que vous essayez d'automatiser dans le cadre des scénarios de test pour l'application sous le test.

Étapes pour utiliser Selenium RC: 

  • Installez le serveur Selenium-RC.
    • Créez un projet en utilisant votre choix de langage de programmation et de langage spécifique au pilote de navigateur.
  • Installer le serveur Selenium
    • Vous pouvez configurer Selenium Server en téléchargeant simplement le fichier selenium-server.jar et en l'exécutant dans votre système en utilisant la commande ci-dessous: 
    • java -jar sélénium-serveur.jar
  • Écrivez le script en utilisant les bibliothèques client Selenium et la même chose en utilisant le serveur Selenium.

Limitations de Selenium RC:

  • Dans Selenium Remote Control, le pilote d'automatisation et le navigateur deviennent un peu plus lents, car le moteur du navigateur n'interagit pas directement, mais Selenium RC injecte du javascript dans le moteur du navigateur, également appelé Selenium Core.
  • Le serveur qui doit être opérationnel avant et pendant l'exécution du script de test.
  • Les actions Advance Web ne peuvent pas être automatisées et gérées à l'aide de Selenium RC telles que le mouvement de la souris, le double-clic, la prise d'entrée du clavier, etc., contrairement à Selenium Webdriver.
  • Selenium RC ne prend pas en charge les tests d'applications mobiles.
  • Selenium RC dépend du navigateur réel pour exécuter le script de test d'automatisation, et il ne prend pas en charge le navigateur sans tête tel que HTMLUnitDriver ou GHostDriver, etc. contrairement à Selenium Webdriver.

Pilote Web Selenium :

Selenium Webdriver est la version avancée parmi les composants Selenium qui est très robuste et prend également en charge la version avancée des interactions Web et n'interagit pas avec le navigateur via Javascript contrairement à Selenium RC et prend également en charge les tests d'applications mobiles. Il est très souvent désigné comme faisant partie de Selenium 2.0.

WebDriver peut gérer des éléments dynamiques et prend également en charge l'exécution parallèle avec plusieurs navigateurs différents.

Nous aurons une discussion détaillée dans les prochains segments.

GRILLE Sélénium : 

Selenium GRID est un autre composant de Selenium grâce auquel vous pouvez exécuter à distance votre script de test d'automatisation en créant des nœuds maître-esclave. Selenium GRID prend en charge les tests parallèles sur le même navigateur ainsi que sur plusieurs navigateurs. 

Nous aurons de plus amples discussions sur Selenium GRID dans les prochaines sections.

Pilote Web 3.0

Selenium 3.0 est la dernière version des composants Selenium qui est essentiellement la combinaison de WebDriver 2.0 et de l'évolution de GRID 3.

Dans ce prochain segment, nous sommes sur le point de discuter de Architecture de Selenium WebDriver en détail, et finalement, il représente comment Selenium fonctionne en interne,.

Architecture Selenium Webdriver  :

Il existe cinq attributs ou composants majeurs faisant partie de l'architecture Selenium Webdriver: 

    

  • Bibliothèque cliente Selenium ou liaisons de langage de programmation Selenium
  • Protocole WebDriver ou JSON Wire Protocol sur HTTP
  • Pilotes du navigateur
  • Moteur de navigateurs
  • Moteur de rendu du navigateur
Architecture de Selenium Webdriver
Tutoriel Selenium - Architecture Selenium Webdriver

Bibliothèques clientes Selenium ou liaisons de langage de programmation: 

Selenium fournit différentes liaisons linguistiques, c'est-à-dire que les bibliothèques clientes prennent en charge plusieurs langues différentes dans le cadre de votre script de test de développement d'automatisation et d'automatisation. Par exemple, Selenium avec C #, Selenium avec Java, Selenium avec Python, etc.

Protocole WebDriver ou JSON WIRE PROTOCOL:

JSON qui signifie essentiellement JavaScript Object Notation. Ce protocole est également appelé protocole WebDriver, utilisé pour le transfert de données serveur-client sur le Web. Chaque pilote de navigateur (par exemple, FirefoxDriver, ChromeDriver, etc.) possède son propre serveur HTTP et utilise ce protocole pour transférer des données via Rest Webservices sous la forme d'une requête HTTP et d'une réponse HTTP.

 Pilotes de navigateur:

Chaque navigateur a son propre pilote de navigateur. Les pilotes du navigateur établissent la communication avec le navigateur respectif via le moteur du navigateur. 

Lorsque le script d'automatisation est exécuté, il communique directement avec les pilotes de navigateur et éventuellement avec le navigateur respectif. La demande et la réponse sont transférées via une requête HTTP et une réponse HTTP.

Moteur de navigateurs:

Chaque navigateur a son propre moteur de navigation; Le moteur de navigateur fonctionne essentiellement comme une couche intermédiaire entre l'interface utilisateur et le moteur de rendu.

Moteur de rendu du navigateur: 

Le moteur de rendu du navigateur est responsable de l'affichage du document demandé en rendant les éléments spécifiques requis pour la demande-réponse et les données.

Architecture de Selenium Webdriver et fonctionnalités fonctionnelles en quelques mots :

Selenium-WebDriver appelle le navigateur directement en utilisant le support natif de chaque navigateur pour l'automatisation et son moteur JavaScript. La manière dont ces appels sont passés et les fonctionnalités qu'ils prennent en charge dépendent du navigateur que vous utilisez.

Il n'injecte pas de JavaScript comme Selenium-RC lorsque le navigateur se charge.

L'incidence suivante se produit lors de l'exécution du script Webdriver:

  •  Nous réalisons les scripts d'automatisation en utilisant n'importe quelle liaison de langage (Java / C # etc.), et il déclenche l'API WebDriver pendant que le script est en cours d’exécution.
  •   Le script et éventuellement les commandes (par exemple driver.findElement (By.id ("idName"))) sont converti en JavaScript en interne.
  •   En utilisant Browser Engine, c'est à nouveau reconverti en JSON, qui est une sorte de paire clé-valeur.
  •   Après avoir obtenu la valeur respective de la clé respective, il identifie les WebElements respectifs et exécute les actions utilisateur respectives (comme cliquer, envoyer des clés, etc.).
  •   Toutes les communications se font à l'aide d'un Appel JSON-Wire ou Webdriver Protocol, et les communications se font via HTTP sous la forme d'API Rest en tant que requête HTTP et réponse HTTP.

Questions fréquemment posées sur le sélénium: 

Quels sont les types d'API WebDriver disponibles dans Selenium ?

Selenium Webdriver est une interface et possède différentes liaisons de langage pour différents langages de programmation tels que Java, C #, python etc., 

Selenium Webdriver a principalement deux variantes différentes telles que: 

  • Pilote Web Selenium local.
  • Pilote Web Selenium à distance. 

Le pilote Web Selenium Local utilise l'API pour travailler avec la liaison de langage spécifique, et vous pouvez travailler avec ceux-ci avec votre exécution locale, tandis que si vous souhaitez exécuter vos scripts de test d'automatisation dans Remote, vous devez utiliser le API de pilote Web Selenium à distance.

Expliquez Quels sont les scénarios que nous ne pouvons pas automatiser à l'aide de Selenium ?

Selenium ne fournit pas un moyen d'automatiser les domaines ci-dessous des aspects de l'application, à savoir: 

  • Test de performance de l'Application
  • Test de sécurité des applications.
  • Traitement et automatisation basés sur l'image
  • Automatisation basée sur Captcha.
  • Scénarios de streaming vidéo.
  • Application native ou applications basées sur des fenêtres.
  • Applications de diffusion en continu

Différence entre Selenium 2.0 et Selenium 3.0 ?

  • Pour Selenium 2.0, l'exigence minimale est Java 1.7, par contre pour Selenium 3.0, la version Java minimale requise est 1.8
  • Selenium 3.0 nécessite GeckOdriver pour Firefox version supérieure à 47, mais ce n'est pas le cas pour Selenium 2.0 
  • Selenium 3.0 prend en charge le navigateur moderne comme Edge, Safari etc. mais d'autre part pour Selenium 2.0, pilote de navigateur pour Mozilla, Chromedriver, IE qui est développé par les développeurs de Selenium.
  • Dans Selenium 3, la prise en charge des tests d'automatisation mobile a été supprimée, c'est-à-dire AndroidDriver et iPhoneDriver, et vous devez utiliser des outils tels que Appium pour les tests d'automatisation mobile, ce qui n'est pas le cas pour Selenium 2.0.
  • Selenium 3.0 ne prend pas en charge le pilote Headless, c'est-à-dire HTMLUnitWebDriver, mais Selenium 2.0 prend en charge l'exécution Headless, c'est-à-dire avec HTMLUnitDriver ou ghostdriver.
  • Au sein de Selenium 3, le Selenium WebDriver est devenu la norme W3C ; d'autre part, Selenium Webdriver dans Selenium 2.0 n'appartient pas à la norme W3C.

Conclusion : Avec cela, nous complétons le premier segment de Blackbook du didacticiel Selenium couvrant Qu'est-ce que Selenium , Selenium Webdriver Architecture, Présentation de Selenium, Avantages et inconvénients de Selenium, Dans le prochain segment de Tutoriel Selenium module 2, nous discuterons de l'installation de Selenium, c'est-à-dire de la configuration, des commandes Selenium et d'autres sujets de base, intermédiaires et avancés de Selenium.

Laisser un commentaire