Selenium Extensiones principales (User-Extensions.js)
⚡ Resumen inteligente
Selenium Las extensiones principales, también llamadas extensiones de usuario, agregan acciones personalizadas, accesores y estrategias de localización a Selenium IDE adjuntando JavaFunciones de script para el Selenium y los objetos prototipo de PageBot cuando se inicia el IDE.
Selenium Extensiones principales
Para entender las extensiones, primero entendamos los tres pilares de Selenium IDECada comando que grabas o escribes en el IDE pertenece a una de las tres categorías que se muestran a continuación, y cada captura de pantalla muestra cómo aparece esa categoría en la lista de comandos del IDE.
- Acción: ¿Qué operación está realizando en la pantalla de la interfaz de usuario?
- Accesores / Aserción: ¿Qué verificación realizas sobre los datos que obtienes de la interfaz de usuario?
- Estrategia de localización: Cómo encontrar el elemento en la interfaz de usuario.
Selenium El IDE incluye una biblioteca consolidada que ya contiene gran cantidad de acciones, métodos de acceso, aserciones y estrategias de localización.
Sin embargo, a veces un proyecto necesita funcionalidad que no está en esa biblioteca. En esa situación, puede ampliar la biblioteca agregando su propia extensión personalizada. Estas extensiones personalizadas se llaman extensión de usuario.
Por ejemplo, supongamos que necesitas una acción que convierta el texto a mayúsculas antes de insertarlo en un elemento web. Esta acción no existe en la biblioteca predeterminada, por lo que creas tu propia extensión de usuario. En este tutorial aprenderás a crear una extensión de usuario que convierta texto a mayúsculas.
⚠️ Antes de empezar: El flujo de trabajo descrito aquí pertenece a Selenium Núcleo y el original Firefox-enchufar Selenium IDE. Selenium Core ha sido retirado y se eliminó el soporte para extensiones de usuario. Selenium frascos en Selenium 3. Los pasos y el código que se muestran a continuación se conservan porque un gran número de suites Selenese antiguas todavía dependen de ellos; la alternativa moderna se describe más adelante en este artículo.
Requisito para crear un Selenium Extensión de usuario
Para crear una extensión de usuario para Selenium IDE, necesitas los conceptos básicos de JavaScript y, en particular, el JavaObjeto prototipo de script. El siguiente diagrama muestra los dos objetos prototipo a los que se adjunta una extensión de usuario.
Para crear tu extensión de usuario, escribe JavaMétodos de script y agréguelos al Selenium prototipo de objeto y al prototipo de objeto PageBot.
Cómo Selenium El IDE reconoce una extensión de usuario.
Después de que se agrega una extensión de usuario a Selenium IDE y el IDE se inicia, cada función registrada en esos JavaLos prototipos de script están cargados y Selenium El IDE reconoce cada uno por su nombre. Por eso, los prefijos de nomenclatura que aparecen en la siguiente sección no son una cuestión de estilo, sino la forma en que el IDE clasifica el comando.
Cómo crear una extensión de usuario
Paso 1) Acción – todas las acciones comienzan con do. Si la acción convierte el texto a mayúsculas, su nombre es doTextUpperCaseCuando agregas este método de acción a Selenium IDE, el propio IDE crea un método de espera coincidente, por lo que doTextUpperCase También produce la función de espera textoMayúsculasYEsperarEl método puede aceptar dos parámetros.
Ejemplo: acción de texto en mayúsculas
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); };
Paso 2) Accesores / Aserción – todos los accesorios registrados en el Selenium Los prototipos de objetos están precedidos por get or isPor ejemplo, `getValueFromCompoundTable` o `isValueFromCompoundTable`. Un accesor puede aceptar dos parámetros: uno para el destino y otro para el campo de valor en el caso de prueba. La siguiente captura de pantalla muestra cómo aparecen estos prefijos una vez cargada la extensión.
Para cada accesorio, Selenium IDE genera las funciones de verificación correspondientes con el prefijo verificar y afirmar, más una función de espera precedida por esperarPor.
Ejemplo: Para los accesores de texto en mayúsculas
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; };
Paso 3) Estrategia de localización – si desea crear su propia función para localizar un elemento, extienda el prototipo PageBot con una función prefijada por localizarElementoPor. Requiere dos parámetros: la cadena de localización y el documento en el que se debe buscar el elemento.
Ejemplo: para localizador de texto en mayúsculas
// 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; };
Guarda las tres funciones en un único archivo llamado user-extensions.jsEl archivo es plano JavaEs un script, así que cualquier editor de texto sirve.
Cómo usar la extensión principal recién creada
Cargar el archivo es una tarea de cuatro pasos en el original. Firefox-plugin IDE. Cada captura de pantalla a continuación corresponde al paso numerado que aparece junto a ella.
- Vaya al Selenium IDE y haga clic Opciones -> Opciones…
- En la sección General sección, seleccione la ubicación del recién creado Selenium Extensión del núcleo.
- Haga clic en OK y reiniciar Selenium IDE
- Encontrarás la extensión en la lista de comandos.
Selenium Extensiones principales vs. Selenium Extensiones del IDE
En materiales antiguos, ambos términos se utilizan indistintamente, pero describen capas diferentes, y la distinción es importante a la hora de decidir dónde colocar la lógica personalizada.
| Aspecto | Selenium Extensión del núcleo | Selenium Extensión IDE |
|---|---|---|
| Lo que extiende | La biblioteca de comandos selenese utilizada durante la reproducción | La propia aplicación IDE |
| Archivo cargado | user-extensions.js | user-extensions-ide.js en el IDE heredado, un manifiesto de complemento en el IDE actual |
| Uso típico | Nuevas acciones, accesores y estrategias de localización | Nuevos elementos de menú, paneles, formatos y comportamiento de la grabadora. |
| Objetos tocados | Selenium.prototype y PageBot.prototype | API de editor y grabador IDE |
| Corre durante | Ejecución de prueba | Creación y grabación |
En resumen, una extensión Core cambia lo que puede hacer una prueba, mientras que una extensión IDE cambia lo que puede hacer la herramienta.
Cómo el moderno Selenium El IDE reemplaza user-extensions.js
El Firefox-enchufar Selenium El IDE dejó de funcionar cuando Firefox se pasó a la arquitectura WebExtensions y el IDE se reescribió como Chrome, Firefox y la extensión del navegador Edge. Esa reescritura eliminó el campo Opciones que se muestra arriba, por lo que no hay dónde indicar la ubicación del archivo user-extensions.js. Dos alternativas compatibles cubren el mismo ámbito.
- El comando de ejecución de script. Para una sola vez JavaScript, agregue un ejecutar script or ejecutar script asíncrono Acceda directamente a la prueba y guarde el resultado en una variable. Esto es lo más parecido a una pequeña acción personalizada.
- Un complemento. Para comandos reutilizables, cree una extensión de navegador que registre un manifiesto en el IDE. El manifiesto declara cada nuevo comando con un ID, un nombre, un tipo opcional y documentación, y también puede declarar nuevos localizadores.
El manifiesto se registra enviando un mensaje a la extensión IDE, como se muestra en el documento oficial. Selenium Documentación del complemento 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 disciplina de nomenclatura se mantiene tras la migración: un comando de complemento se sigue declarando una sola vez y luego se reutiliza en todas las pruebas, exactamente como ocurría con una extensión de Core.
Extensiones y complementos populares utilizados en Selenium IDE
Los complementos que se muestran a continuación eran los más utilizados en el IDE anterior. Varios de ellos, como el control de flujo y la captura de pantalla en caso de fallo, ahora están integrados en el IDE actual o disponibles como complementos con soporte.
| Nombre | Propósito |
|---|---|
| Favoritos | Para marcar un conjunto de pruebas como favorito y ejecutarlo con un solo clic |
| Piloto flexible X | Para automatización basada en Flex |
| FlexMonkium | Para grabación y reproducción basadas en Adobe Flex las pruebas in Selenium IDE |
| Registro de archivos | Para guardar registros en un archivo |
| Control de flujo | Para controlar el flujo de ejecución de la prueba |
| Elementos destacados | Para resaltar un control web |
| Espera implícita | Para esperar un elemento durante un tiempo determinado |
| Captura de pantalla en caso de error | Tome una captura de pantalla en caso de falla |
| resultados de la prueba | Guarde el caso de prueba resultado de un conjunto de pruebas en un solo clic |
El viejo SeleniumLa página de descarga de HQ que alojaba estos archivos ya no existe. Los complementos actuales y el propio IDE se distribuyen desde Selenium Sitio del proyecto IDE y desde Chrome, Firefox y las tiendas de complementos de Edge.
Descargue nuestra Selenium Extensión principal utilizada en este tutorial









