Selenium Extensions principales (User-Extensions.js)
⚡ Résumé intelligent
Selenium Les extensions de base, également appelées extensions utilisateur, ajoutent des actions personnalisées, des accesseurs et des stratégies de localisation à Selenium IDE en attachant JavaLes fonctions du script sont liées à Selenium et les objets prototypes PageBot au démarrage de l'IDE.
Selenium Extensions principales
Pour comprendre les extensions, commençons par comprendre les trois piliers de Selenium IDEChaque commande que vous enregistrez ou saisissez dans l'IDE appartient à l'une des trois catégories ci-dessous, et chaque capture d'écran montre comment cette catégorie apparaît dans la liste des commandes de l'IDE.
- Action: Quelle opération effectuez-vous sur l'écran d'interface utilisateur ?
- Accesseurs / Assertion : Quelles vérifications effectuez-vous sur les données obtenues via l'interface utilisateur ?
- Stratégie de localisation : Comment trouver l'élément dans l'interface utilisateur.
Selenium L'IDE est livré avec une bibliothèque mature qui contient déjà de nombreuses actions, accesseurs et assertions, ainsi que des stratégies de localisation.
Cependant, il arrive qu'un projet nécessite des fonctionnalités absentes de la bibliothèque. Dans ce cas, vous pouvez l'étendre en ajoutant votre propre extension personnalisée. Ces extensions personnalisées sont appelées des extensions de bibliothèque. poste utilisateur.
Par exemple, supposons que vous ayez besoin d'une action qui convertit du texte en majuscules avant de l'insérer dans un élément web. Cette action n'existant pas dans la bibliothèque par défaut, vous devez créer votre propre extension utilisateur. Ce tutoriel vous apprendra à créer une telle extension.
⚠️ Avant de commencer : le flux de travail décrit ici appartient à Selenium Core et l'original Firefox-brancher Selenium IDE. Selenium Le noyau a été abandonné et la prise en charge des extensions utilisateur a été supprimée. Selenium bocaux dans Selenium 3. Les étapes et le code ci-dessous sont conservés car un grand nombre de suites Selenese héritées en dépendent encore ; le remplacement moderne est décrit plus loin dans cet article.
Exigence de créer un Selenium Extension utilisateur
Pour créer une extension utilisateur pour Selenium IDE, vous avez besoin des concepts de base de Javascénario et, en particulier, le JavaObjet prototype de script. Le diagramme ci-dessous illustre les deux objets prototypes auxquels une extension utilisateur s'associe.
Pour créer votre extension utilisateur, vous écrivez JavaLes méthodes de script et les ajouter au Selenium prototype d'objet et prototype d'objet PageBot.
Comment Selenium L'IDE reconnaît une extension utilisateur
Après l'ajout d'une extension utilisateur à Selenium L'IDE est lancé, chaque fonction enregistrée sur ces JavaLes prototypes de script sont chargés, et Selenium L'IDE reconnaît chaque commande par son nom. C'est pourquoi les préfixes de nommage dans la section suivante ne relèvent pas d'un choix stylistique : ils servent à classer votre commande par l'IDE.
Comment créer une extension utilisateur
Étape 1) Action – toutes les actions commencent par doSi l'action convertit du texte en majuscules, son nom est doTextUpperCaseLorsque vous ajoutez cette méthode d'action à Selenium L'IDE, l'IDE lui-même, crée une méthode d'attente correspondante, donc doTextUpperCase produit également la fonction d'attente textUpperCaseAndWaitCette méthode peut accepter deux paramètres.
Exemple : Action de texte en majuscules
Selenium.prototype.doTextUpperCase = function(locator, text) { // Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text var element = this.page().findElement(locator); // Create the text to type text = text.toUpperCase(); // Replace the element text with the new text this.page().replaceText(element, text); };
Étape 2) Accesseurs / Assertion – tous les accesseurs enregistrés sur le Selenium Les prototypes d'objets sont préfixés par obtenez or isPar exemple, `getValueFromCompoundTable` ou `isValueFromCompoundTable`. Un accesseur peut accepter deux paramètres : l’un pour la cible et l’autre pour le champ de valeur dans le cas de test. La capture d’écran ci-dessous montre comment ces préfixes apparaissent une fois l’extension chargée.
Pour chaque accessoire, Selenium L'IDE génère les fonctions de vérification correspondantes préfixées par vérifier et affirmer, plus une fonction d'attente préfixée par attendre.
Exemple : Pour les accesseurs de texte en majuscules
Selenium.prototype.assertTextUpperCase = function(locator, text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to verify text = text.toUpperCase(); // Get the actual element value var actualValue = element.value; // Make sure the actual value matches the expected Assert.matches(expectedValue, actualValue); }; Selenium.prototype.isTextEqual = function(locator, text) { return this.getText(locator).value===text; }; Selenium.prototype.getTextValue = function(locator, text) { return this.getText(locator).value; };
Étape 3) Stratégie de localisation – si vous souhaitez créer votre propre fonction pour localiser un élément, étendez le prototype PageBot avec une fonction préfixée par localiserElementParElle prend deux paramètres : la chaîne de localisation et le document dans lequel l’élément doit être recherché.
Exemple : pour le localisateur de texte en majuscules
// The "inDocument" is a document you are searching. PageBot.prototype.locateElementByUpperCase = function(text, inDocument) { // Create the text to search for var expectedValue = text.toUpperCase(); // Loop through all elements, looking for ones that have // a value === our expected value var allElements = inDocument.getElementsByTagName("*"); // This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element. for (var i = 0; i < allElements.length; i++) { var testElement = allElements[i]; if (testElement.innerHTML && testElement.innerHTML === expectedValue) { return testElement; } } return null; };
Enregistrez les trois fonctions dans un seul fichier nommé user-extensions.jsLe fichier est simple. JavaScript, donc n'importe quel éditeur de texte suffit.
Comment utiliser la nouvelle extension principale
Le chargement du fichier est une tâche en quatre étapes dans la version originale Firefox-plugin IDE. Chaque capture d'écran ci-dessous correspond à l'étape numérotée à côté.
- Allez dans Selenium IDE et cliquez Options -> Options…
- Dans l' Généralités Dans cette section, sélectionnez l'emplacement de la nouvelle section créée. Selenium Extension principale.
- Cliquez à nouveau OK et redémarrer Selenium IDE
- Vous trouverez l'extension dans la liste des commandes.
Selenium Extensions de base vs Selenium Extensions IDE
Ces deux termes sont utilisés indifféremment dans les documents plus anciens, mais ils décrivent des couches différentes, et cette distinction est importante lorsque vous décidez où placer la logique personnalisée.
| Aspect | Selenium Extension de base | Selenium Extension IDE |
|---|---|---|
| Ce qu'il étend | La bibliothèque de commandes Selenese utilisée pendant la lecture | L'application IDE elle-même |
| Fichier chargé | user-extensions.js | Le fichier user-extensions-ide.js dans l'ancien IDE est un manifeste de plugin dans l'IDE actuel. |
| Utilisation typique | Nouvelles actions, accesseurs et stratégies de localisation | Nouveaux éléments de menu, panneaux, formats et comportement de l'enregistreur |
| Objets touchés | Selenium.prototype et PageBot.prototype | API d'éditeur et d'enregistreur IDE |
| Courses pendant | Test d'exécution | Création et enregistrement |
En résumé, une extension Core modifie les capacités d'un test, tandis qu'une extension IDE modifie les capacités de l'outil.
Comment le moderne Selenium L'IDE remplace user-extensions.js
Le Firefox-brancher Selenium L'IDE a cessé de fonctionner lorsque Firefox Le développement a été migré vers l'architecture WebExtensions et l'IDE a été réécrit sous forme de Chrome. Firefox et l'extension pour navigateur Edge. Cette réécriture a supprimé le champ Options mentionné ci-dessus ; il n'est donc plus possible de faire référence à un fichier user-extensions.js. Deux alternatives compatibles offrent les mêmes fonctionnalités.
- La commande d'exécution de script. Pour une seule fois JavaScript, ajoutez un exécuter le script or exécuter un script asynchrone Exécutez directement le test et stockez le résultat dans une variable. C'est ce qui se rapproche le plus d'une petite action personnalisée.
- Un plugin. Pour les commandes réutilisables, créez une extension de navigateur qui enregistre un manifeste auprès de l'IDE. Ce manifeste déclare chaque nouvelle commande avec un identifiant, un nom, un type optionnel et une documentation ; il peut également déclarer de nouveaux localisateurs.
Le manifeste est enregistré en envoyant un message à l'extension IDE, comme indiqué dans la documentation officielle. Selenium Documentation du plugin IDE.
browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);
La convention de nommage survit à la migration : une commande de plugin est toujours déclarée une seule fois, puis réutilisée dans chaque test, exactement comme l’était une extension Core.
Extensions et plugins populaires utilisés dans Selenium IDE
Les modules complémentaires ci-dessous étaient les plus utilisés dans l'ancien EDI. Plusieurs d'entre eux, comme le contrôle de flux et la capture d'écran en cas d'échec, sont désormais intégrés à l'EDI actuel ou disponibles sous forme de plugins maintenus.
| Nom | Interet |
|---|---|
| Favoris | Pour marquer une suite de tests comme favorite et l'exécuter en un seul clic |
| Pilote flexible X | Pour l'automatisation basée sur Flex |
| FlexMonkium | Pour l'enregistrement et la lecture basés sur Adobe Flex vers les tests in Selenium IDE |
| Journalisation des fichiers | Pour enregistrer les journaux dans un fichier |
| Le contrôle de flux | Pour contrôler le flux d’exécution des tests |
| Mettre en surbrillance les éléments | Pour mettre en évidence un champ web |
| Attente implicite | Attendre un élément pendant une certaine durée |
| Capture d'écran en cas d'échec | Prendre une capture d'écran en cas d'échec |
| Résultats de test | Enregistrez le cas de test résultat d'une suite de tests en un clic |
Le vieux SeleniumLa page de téléchargement HQ qui hébergeait ces fichiers n'existe plus. Les plugins actuels et l'IDE lui-même sont distribués depuis le site web. Selenium Site du projet IDE et depuis Chrome, Firefox et les boutiques d'extensions Edge.
Téléchargez le Selenium Extension principale utilisée dans ce didacticiel









