Maison > interface Web > js tutoriel > Comment tester votre javascript avec Selenium WebDriver et Mocha

Comment tester votre javascript avec Selenium WebDriver et Mocha

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-16 13:21:09
original
415 Les gens l'ont consulté

How to Test Your JavaScript with Selenium WebDriver and Mocha

Points de base

  • Mocha.js est un framework de test JavaScript riche en fonctionnalités basé sur Node.js, qui peut être utilisé pour écrire des tests fonctionnels JavaScript en combinaison avec Selenium WebDriver 3 et NodeJS. Cela nécessite une familiarité avec les bases des langages de programmation NodeJS et JavaScript.
  • Mocha fournit une API pour construire le code de test dans les suites de test et les modules de cas de test pour permettre l'exécution et la génération de rapports. Il prend en charge les fonctions de configuration et de démontage de la suite de tests, ainsi que des fonctions de configuration et de démontage de cas de test.
  • Selenium WebDriver est une bibliothèque qui contrôle les navigateurs Web et simule le comportement des utilisateurs, et peut être intégré à Mochajs. Il fournit une API de bibliothèque de langage spécifique appelée "liaison" pour contrôler le navigateur.
  • Les fonctions asynchrones utilisées avec Mocha doivent être gérées correctement pour éviter les résultats inattendus. Cela peut être fait en passant la fonction "fait" à la chaîne de rappel ou en renvoyant une promesse.
  • D'autres frameworks tels que WebDriverio, ProTracteur et CodePTJS fournissent des solutions de wrapper qui masquent certaines configurations pour les utilisateurs et fournissent un traitement de promesse amélioré pour une meilleure expérience de script.

Cet article a été initialement publié sur TestProject.

Si vous souhaitez rédiger des tests fonctionnels en JavaScript, ce tutoriel fournit aux ingénieurs d'automatisation d'interface utilisateur le matériel de référence structuré parfait pour les tests JavaScript à l'aide de Selenium WebDriver 3, Mocha et Nodejs.

JavaScript est aujourd'hui un langage Web omniprésent qui semble surmonter son passé "notoire" et est devenu une plate-forme plus fiable non seulement pour les clients mais aussi les serveurs. Mocha.js (ou Mocha pour faire court) est un framework de test JavaScript riche en fonctionnalités basé sur Node.js.Il fournit une plate-forme et une API pour créer des applications côté serveur autonomes, basées sur le moteur JavaScript V8 de Google.

Remarque: Pour commencer à apprendre ce didacticiel JavaScript, vous devez vous familiariser avec les bases des langages de programmation NodeJS et JavaScript.

Présentation du tutoriel:

  1. MOCHA Test Build
  • Introduction
  • Installation
  • Installation du module d'affirmation Chai
  • Test Suite et Test Case Structure
  • Créer des tests avec Mocha
  • Tester les suites et les cas de test exécutant Mocha
  • Gérer la synchronisation du code de test asynchrone
  1. en utilisant l'API JavaScript Selenium 3 intégré à Mochajs
  • Introduction au sélénium
  • Installation de sélénium
  • webDriver Construction
  • Intégrer les mochajs avec Selenium WebDriver 3

Version utilisée:

  • Version du nœud: 6.10.1 (LTS)
  • Mocha: 2.5.3
  • webDriverjs: 3.3.0
  1. Créer des tests avec Mocha

MOCHA INTRODUCTION

Comme mentionné précédemment, Mocha est un cadre de test JavaScript qui exécute des tests sur le nœud. Mocha est fourni sous la forme d'un package de nœuds (via NPM), vous permettant de remplacer les fonctions "Assert" standard du nœud par n'importe quelle bibliothèque d'assertion, comme les chaijs. De plus, Mocha a plusieurs composants similaires à Jasmine, un autre cadre d'automatisation des tests populaire que nous avons mentionné dans l'étude tendance de l'automatisation des tests frontaux et unitaires).

Mocha fournit une API qui spécifie un moyen de créer du code de test dans des suites de test et des modules de cas de test pour l'exécution, puis générer des rapports de test. Mocha fournit deux modes de fonctionnement: la ligne de commande (CLI) ou la programmation (API MOCHA).

Installation Mocha

Si vous souhaitez utiliser Mocha dans la CLI, vous devez l'installer globalement en tant que node.js.

<code>npm install -g mocha</code>
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

Installation du module d'affirmation Chai

<code>npm install --save chai</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
L'option

–Save est utilisée pour installer des modules dans le cadre du projet, plutôt que dans le monde.

Test Suite et Test Case Structure

Dans Mocha, la suite de tests est définie par le mot-clé "décrire", qui accepte une fonction de rappel. Les suites de test peuvent contenir des suites de test sub / internes, qui peuvent contenir leurs propres suites de sous-test, etc. Le cas de test est représenté par la fonction "IT", qui accepte une fonction de rappel et contient le code de test.

Mocha prend en charge les paramètres de la suite de tests et les fonctions de paramètres de cas de test. "Avant" signifie les paramètres de la suite de tests, tandis que "AVANTEAH" signifie les paramètres de cas de test. "Avant l'enseignement" est en fait une configuration courante pour chaque cas d'utilisation dans la suite et sera exécuté avant chaque cas d'utilisation.

Comme avec la configuration, Mocha prend en charge les suites de test et les fonctions de détresse de cas de test. «Après», signifie le démontage de la suite de tests et «après l'enseignement» signifie le démontage du cas de test, ces deux fonctions sont exécutées après la suite de test et chaque cas de test, respectivement.

Créez un fichier qui "héberge" la suite de tests, telle que test_suite.js, et écrivez ce qui suit;

describe("Inner Suite 1", function(){

    before(function(){

        // 在测试套件执行之前执行某些操作
        // 无论是否有失败的用例

    });

    after(function(){

        // 测试套件执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    beforeEach(function(){

        // 在测试用例执行之前执行某些操作
        // 无论是否有失败的用例

    });

    afterEach(function(){

        // 测试用例执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    it("Test-1", function(){

        // 测试代码
        // 断言

    });

    it("Test-2", function(){

        // 测试代码
        // 断言

    });

    it("Test-3", function(){

        // 测试代码
        // 断言

    });

});
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Exécuter la suite de test mocha et les cas de test

Mocha prend en charge trois méthodes d'exécution de test: le fichier de suite de test entier, le test filtré dans le mode "grep" et la recherche de test (option récursive) dans l'arborescence du répertoire Filtrage Grep

Exécutez l'intégralité du fichier de suite de test:

mocha /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion
Exécutez une suite spécifique ou un test à partir d'un fichier de suite de test spécifique.

Si un kit est sélectionné, tous les sous-kits et / ou tests seront effectués.

mocha -g “Test-2” /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion
Exécutez une suite spécifique ou un fichier de test en recherchant récursivement dans l'arborescence du répertoire.

mocha --recursive -g “Test-2” /directory/
Copier après la connexion
Copier après la connexion
CLI Options pour les extensions:

mocha --help
Copier après la connexion
Copier après la connexion
Gérer la synchronisation du code de test asynchrone

Si vous utilisez des fonctions asynchrones avec Mocha et que vous n'êtes pas géré correctement, vous pouvez vous avoir du mal à faire face. Si vous souhaitez utiliser du code asynchrone dans vos cas de test (tels que les demandes HTTP, les fichiers, le sélénium, etc.), suivez les directives suivantes pour surmonter les résultats inattendus:

  1. Fonction faite

Dans la fonction de test (IT), vous devez passer la fonction Done dans la chaîne de rappel - cela garantit qu'il est exécuté après votre dernière étape.

L'exemple suivant met l'accent sur la fonction terminée. Dans ce cas, un délai d'expiration de trois secondes se produira à la fin de la fonction de test.

<code>npm install -g mocha</code>
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
  1. retourner à la promesse

La promesse de retour est une autre façon de s'assurer que Mocha a exécuté toutes les lignes de code lors de l'utilisation d'une fonction asynchrone (dans ce cas, la fonction "terminée" n'est pas requise.)

<code>npm install --save chai</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. JavaScript Selenium 3 Intégration avec Mochajs

Introduction au sélénium

Selenium est une bibliothèque qui contrôle les navigateurs Web et simule le comportement des utilisateurs. Plus précisément, Selenium fournit aux utilisateurs une API de bibliothèque de langage spécifique appelée "liaison". "Binding" agit comme un client pour effectuer des demandes sur les composants intermédiaires et agit comme un serveur pour contrôler finalement le navigateur.

L'API ou la liaison sélénium existe désormais dans toutes les langages de développement populaires. Toutes les implémentations linguistiques acceptent désormais de maintenir la cohérence des conventions de dénomination des fonctions d'API.

Les composants intermédiaires peuvent être le joueur Web réel, le serveur de sélénium-standalone trouvé localement dans chaque ensemble de sélénium, ainsi que les pilotes de contrôle du navigateur indigène du vendeur - tels que Geckodriver de Mozilla, Chromedriver du Chrome, etc. De plus, Selenium WebDriver communique avec les pilotes de navigateur via "JSONWired Protocol" et devient la norme Web W3C.

Installation de sélénium

Nous découvrirons rapidement la mise en œuvre du sélénium et des Nodejs avant de plonger dans l'intégration du sélénium et des mokajs.

Afin d'utiliser l'API Selenium de Javascript (ou la liaison JavaScript Selenium), nous devons installer le module correspondant:

describe("Inner Suite 1", function(){

    before(function(){

        // 在测试套件执行之前执行某些操作
        // 无论是否有失败的用例

    });

    after(function(){

        // 测试套件执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    beforeEach(function(){

        // 在测试用例执行之前执行某些操作
        // 无论是否有失败的用例

    });

    afterEach(function(){

        // 测试用例执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    it("Test-1", function(){

        // 测试代码
        // 断言

    });

    it("Test-2", function(){

        // 测试代码
        // 断言

    });

    it("Test-3", function(){

        // 测试代码
        // 断言

    });

});
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

À ce stade, il doit être clair que JavaScript Selenium WebDriver peut également être appelé webdriverjs (mais pas dans NPM). WebDriveJS est différent des autres bibliothèques / modules (tels que WebDriverio, ProTracteur, etc.). Selenium-WebDriver est la bibliothèque officielle de base de base JavaScript Selenium, tandis que d'autres bibliothèques sont des bibliothèques / frameworks en wrapper construits sur l'API WebDriverjs, prétendant améliorer la disponibilité et la maintenance.

Dans le code NodeJS, les modules sont utilisés de la manière suivante:

mocha /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion

webDriver Construction

Pour pouvoir utiliser le sélénium, nous devons créer l'objet "WebDriver" correspondant, qui contrôlera ensuite notre navigateur. Ci-dessous, nous pouvons voir comment nous utilisons le modèle "Builder" pour créer des objets WebDriver en reliant plusieurs fonctions.

Builder avec options

mocha -g “Test-2” /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans le code ci-dessus, nous avons réussi à construire un objet WebDriver qui agrége les configurations de plusieurs navigateurs (notez la méthode "Options"), bien que la méthode Forbrowser () définit explicitement Firefox.

L'utilisateur peut définir la variable d'environnement Selenium_Browser à l'exécution pour définir le navigateur souhaité. Il remplacera toutes les options définies par Forbrowser car nous avons définie plusieurs fonctionnalités de navigateur via Set Options.

Les propriétés du navigateur peuvent contenir plusieurs types d'informations, selon le navigateur testé. Par exemple, dans les propriétés de Mozilla, nous pouvons définir la configuration "Profil" requise comme suit:

<code>npm install -g mocha</code>
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

Ensuite, dans l'extrait de constructeur ci-dessus, nous pouvons ajouter:

<code>npm install --save chai</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Builder avec fonctionnalités

La documentation de l'API JavaScript Selenium WebDriver décrit plusieurs façons de créer un webdriver. Une autre approche possible consiste à définir toutes les configurations de pilote requises pour fonctionner:

describe("Inner Suite 1", function(){

    before(function(){

        // 在测试套件执行之前执行某些操作
        // 无论是否有失败的用例

    });

    after(function(){

        // 测试套件执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    beforeEach(function(){

        // 在测试用例执行之前执行某些操作
        // 无论是否有失败的用例

    });

    afterEach(function(){

        // 测试用例执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    it("Test-1", function(){

        // 测试代码
        // 断言

    });

    it("Test-2", function(){

        // 测试代码
        // 断言

    });

    it("Test-3", function(){

        // 测试代码
        // 断言

    });

});
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Notez que si les setOptions sont définies après les capacités, la configuration sera écrasée (par exemple, configuration de proxy).

Sélénium webdriver Control Flow and Promise Management

Sélénium WebDriver se comporte de la même manière parce que JavaScript et NodeJ sont basés sur le principe asynchrone. Pour éviter les pyramides de rappel et aider les ingénieurs à tester l'expérience de script et la lisibilité au code et la maintenabilité, l'objet Selenium WebDriver contient un gestionnaire de promesses en utilisant "ControlFlow". "ControlFlow" est une classe responsable de l'exécution de la commande Asynchrone WebDriver.

En fait, chaque commande est exécutée sur l'objet pilote et renvoie une promesse. À moins que vous ne deviez traiter la valeur de promesse analysée, vous n'avez pas besoin de nicher la commande suivante dans "alors" comme indiqué ci-dessous:

mocha /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conseils pour les tests JavaScript Selenium WebDriver et Mocha

  1. Le pilote est un objet WebDriver, pas un objet de promesse
  2. driver.getTitle () ou driver.get (URL) ou toute autre commande Selenium renvoie un objet de promesse!

Cela signifie que nous pouvons faire ce qui suit:

mocha -g “Test-2” /path/to/test_suite.js
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. De plus, puisque le conducteur lui-même est asynchrone, les opérations suivantes ne fonctionneront pas:
mocha --recursive -g “Test-2” /directory/
Copier après la connexion
Copier après la connexion

Remarque: le titre est un objet de promesse, pas la valeur analysée réelle.

Mochajs Selenium webdriver

D'une manière générale, Selenium WebDriver peut être intégré à Mochajs car il est utilisé pour tout script NodeJS normal. Cependant, comme Mocha ne sait pas quand la fonction asynchrone est terminée avant d'appeler Done () ou de renvoyer une promesse, nous devons le gérer très attentivement.

Basé sur la promesse

La commande Selenium est automatiquement enregistrée pour s'assurer que la commande WebDriver est exécutée dans le bon ordre et doit renvoyer une promesse.

Le code suivant montre le (avant, avant l'enseignement, après l'enseignement) ou le corps du boîtier de test.

mocha --help
Copier après la connexion
Copier après la connexion

Les éléments suivants seront effectués:

  1. Chargement de la page du navigateur de "my_service"
  2. Localisez le champ de texte avec ID "Nom d'utilisateur"
  3. Remplissez les champs de texte avec ID "nom d'utilisateur" avec "my_username"
  4. Recherchez le titre de la page et vérifiez s'il est égal à "my_title"
  5. Exit WebDriver et la fenêtre du navigateur se ferme. Le processus du navigateur se termine.

Sélénium webDriver Prise en charge des mokajs

Pour effectuer des tests JavaScript à l'aide de Selenium WebDriver et Mocha de manière facile, WebDriver favorise l'utilisation de mochajs en emballage des fonctions de test Mochajs (avant, avant l'enseignement, elle, etc.) à l'aide d'objets de test. Cela crée une portée qui fait prendre conscience de l'utilisation de WebDriver. Par conséquent, il n'est pas nécessaire de rendre une promesse.

Tout d'abord, le module correspondant doit être chargé:

<code>npm install -g mocha</code>
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

Toutes les fonctions Mocha commencent par «test».

<code>npm install --save chai</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
et ainsi de suite. Ensuite, le code ci-dessus est complètement réécrit comme:

describe("Inner Suite 1", function(){

    before(function(){

        // 在测试套件执行之前执行某些操作
        // 无论是否有失败的用例

    });

    after(function(){

        // 测试套件执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    beforeEach(function(){

        // 在测试用例执行之前执行某些操作
        // 无论是否有失败的用例

    });

    afterEach(function(){

        // 测试用例执行完成后执行某些操作
        // 无论是否有失败的用例

    });

    it("Test-1", function(){

        // 测试代码
        // 断言

    });

    it("Test-2", function(){

        // 测试代码
        // 断言

    });

    it("Test-3", function(){

        // 测试代码
        // 断言

    });

});
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Conclusion

Dans ce tutoriel, nous avons la possibilité de subir des tests JavaScript à l'aide de Selenium WebDriver et Mochajs. Nous devons nous rappeler qu'il existe des différences majeures en raison de la nature asynchrone des Nodejs, des Mochajs et du Sélénium WebDriver par rapport aux autres liaisons du langage de programmation.

Tant que nous continuons à retourner la promesse dans toute fonction qui crée la promesse (fonctions de bibliothèque de test personnalisées ou Hooks / Cas de test Mochajs), Mocha les exécutera dans le bon ordre.

D'autres frameworks tels que WebDriverio, ProTracteur et CodePTJS fournissent des solutions de wrapper qui peuvent masquer certaines configurations pour les utilisateurs et fournir un traitement de promesse amélioré pour une meilleure expérience de script, que de nombreux experts d'automatisation des tests peuvent trouver cela utile.

FAQS (FAQ) sur le test de JavaScript avec Selenium webdriver et moka

Comment configurer Selenium WebDriver pour les tests JavaScript?

La configuration de Selenium WebDriver pour les tests JavaScript comprend plusieurs étapes. Tout d'abord, vous devez installer Node.js et NPM (Node Package Manager) sur votre système. Une fois l'installation terminée, vous pouvez utiliser NPM pour installer Selenium WebDriver en exécutant la commande NPM Installer Selenium-webdriver. Vous devez également installer un pilote de navigateur, comme ChromEdriver pour Google Chrome, qui peut être fait en exécutant NPM Installer Chromedriver. Une fois ces installations terminées, vous pouvez commencer à écrire des scripts de test en JavaScript à l'aide de Selenium WebDriver.

Qu'est-ce que Mocha et pourquoi l'utiliser avec Selenium WebDriver?

Mocha est un cadre de test JavaScript populaire qui fournit un moyen simple et flexible d'écrire et d'organiser des cas de test. Il est souvent utilisé avec Selenium WebDriver car il fournit des fonctionnalités telles que les tests asynchrones, ce qui est essentiel à la gestion des opérations retardées telles que les demandes de réseau et les opérations de navigateur. Mocha fournit également une syntaxe concise et claire pour rendre vos cas de test plus faciles à écrire et à comprendre.

Comment rédiger des cas de test de base à l'aide de Selenium WebDriver et Mocha?

Écriture de cas de test de base à l'aide de Selenium WebDriver et Mocha comprend la création d'un nouveau fichier JavaScript et des cas de test d'écriture dans Mocha décrivent et il bloque. Dans ce bloc, vous pouvez utiliser l'API de Selenium WebDriver pour interagir avec le navigateur, comme la navigation vers une page Web, l'interaction avec les éléments et la vérification de leurs propriétés. Voici un exemple de base:

<code>npm install -g mocha</code>
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

Comment gérer les opérations asynchrones dans mes cas de test?

Vous pouvez utiliser la syntaxe asynchrone / attente de JavaScript pour gérer les opérations asynchrones dans les cas de test. Cela vous permet d'écrire du code asynchrone de manière synchrone, ce qui facilite la lecture et la compréhension. Dans le contexte de Selenium WebDriver, des opérations telles que la navigation vers une page Web, interagissant avec les éléments et les conditions d'attente sont asynchrones et peuvent être traitées à l'aide d'Async / Await.

Comment exécuter mes cas de test à l'aide de Mocha?

Pour exécuter des cas de test avec Mocha, vous pouvez utiliser la commande mocha suivie du chemin d'accès au fichier de test. Par exemple, si votre fichier de test est nommé test.js, vous pouvez l'exécuter à l'aide de la commande mocha test.js. Mocha trouvera automatiquement et exécutera tous les cas de test dans ce fichier.

Comment utiliser les affirmations dans mon cas de test?

Les affirmations dans les cas de test peuvent être utilisées pour vérifier que certaines conditions sont remplies. Par exemple, vous voudrez peut-être affirmer que le titre de la page Web répond à vos attentes après avoir effectué une recherche. Les affirmations peuvent être écrites à l'aide du module Assert intégré de JavaScript ou des bibliothèques tierces telles que Chai.

Comment gérer les erreurs dans mes cas de test?

La syntaxe JavaScript Try / Catch peut être utilisée pour gérer les erreurs dans les cas de test. Cela vous permet de capturer toutes les erreurs qui se produisent lors de l'exécution du cas de test et de les gérer de manière appropriée, par exemple en enregistrant les erreurs et en échouant le cas de test.

Comment interagir avec des éléments sur une page Web?

Vous pouvez utiliser l'API de Selenium WebDriver pour interagir avec des éléments sur une page Web. Cela inclut la clic sur un élément, la saisie du champ de saisie et les propriétés de l'élément de lecture. Ces opérations sont effectuées à l'aide de la méthode Driver.FindElement, qui renvoie un objet WebElement avec lequel vous pouvez interagir.

Comment attendre les conditions dans mon cas de test?

Vous pouvez attendre les conditions de mon cas de test à l'aide de la méthode Driver.Atty.ATT de Selenium WebDriver. Cette méthode prend un temps mort conditionnel et facultatif et attend que la condition soit remplie ou que le délai d'attente soit atteint. Vous pouvez utiliser le module toyal pour créer une condition, tel que jusqu'à.Titleis pour attendre que le titre de la page Web soit une valeur.

Comment exécuter mes cas de test dans différents navigateurs?

Vous pouvez exécuter des cas de test dans différents navigateurs en spécifiant le navigateur lors de la création d'une instance WebDriver. Par exemple, vous pouvez exécuter des cas de test dans Firefox en utilisant un nouveau Builder (). Forbrowser («Firefox») ou les exécuter dans Chrome en utilisant un nouveau constructeur (). Forbrowser («Chrome»). Vous devez installer le pilote de navigateur approprié pour le faire fonctionner.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal