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/
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