Busca lo que quieras

Agregar waitFormElementPresent a las pruebas de selenium en javascript

Si hemos creado pruebas con selenium builder, para las pruebas end to end. Y hemos formado nuestras pruebas bajo el formato json, este script quizas te pueda servir.

Lo que sucede es que si los comandos se ejecutan más rápido que el browser en renderizar los objetos del DOM, se va a producir un error. (Lógico: por ejemplo, no puedo hacer clic a un botón que nisiquiera se ha puesto en el DOM).

Por esa razón, es bueno agregar la instrucción de waitForElementPresent. De esta manera nos aseguramos que antes que pase al siguiente comando click o lo que sea, primero espere a que este el objeto.

Esto se puede hacer manualmente, pero ¡Que pereza!. Por eso, hice una pequeña función que agrega la instrucción waitForElementPresent, antes de cada click o acción sobre algún elemento del DOM. Cabe decir que esta es la versión 0.0.0.0.0.0.0.1, y que esta para mejorarla muchísimo.

Esta es la función:

var newJson = JSON.parse(JSON.stringify(json));
newJson.steps = [];
for(iStep = 0; iStep < json.steps.length; iStep++){
    
    if(json.steps[iStep].type=="clickElement" || json.steps[iStep].type == "setElementText")
    {
        var step =  JSON.parse(JSON.stringify(json.steps[iStep]));
        //modify type step to waitStep
        step.type = "waitForElementPresent";
        newJson.steps.push(step);
    }
    newJson.steps.push(json.steps[iStep]);
}


Donde el json es: El objeto json de nuestras pruebas.

y newJson es: El nuevo objeto json de pruebas con waitForElementPresent.

El uso rudimentario que le doy actualmente es:

Copiar el json en la consola de chrome, y asignarlo a la variable json. 

Posteriormente ejecutar el pedazo de código puesto arriba

Obtener el json final así:

JSON.stringify(newJson)

Copio el string en una herramienta online de formateo de json, por ejemplo: http://pro.jsonlint.com/.

Lo pego, y listo... ya tengo mi json formateado de pruebas.

AQUI ESTA EN JSFIDDLE LA IDEA:

http://jsfiddle.net/elkin0727/k791oyaj/


Espero les sirva.


Sean felices! :) Y siéntanse libres de opinar ;)

No hay comentarios:

Publicar un comentario

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)