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









