Navegador de automatización - anexar javascript para páginas y esperar a la terminación de la tarea

StackOverflow https://stackoverflow.com/questions/8303131

Pregunta

Tengo una fea entrada de datos de la tarea de automatización.El problema es que algunos de los procesos que dependen de la web basada en ajax servicios que no tienen la API.

El problema con iMacros (o cualquier otra herramienta de automatización) es que cada vez que la macro se inyecta javascript dentro de una página (la modificación de las devoluciones de llamada de ajax y haciendo todo lo que tiene que hacer), el hijo de secuencia de comandos no tiene forma de notificar a los padres de secuencia de comandos que el equipo está listo, y permitir que continúe el proceso en un solo hilo.Si yo uso la ESPERA de instrucciones, la fiabilidad será cero y no hay manera de implementar failsafes.

He intentado todo lo que podía pensar, incluyendo las Extensiones de Chrome, la reducción de la vulnerabilidad de XSS de seguridad del navegador e incluso replicar las solicitudes a través de cURL y PHP.Cada uno de estos tiene sus propias limitaciones.

Estoy abierto a cualquier solución que:

  • pueden esperar a que la página termine de cargar (onload eventos)
  • puede modificar el código javascript en esa página en particular, interactuar con los revendedores, etc.
  • puede notificar a los padres de llamadas que los sub-tareas se han completado y el fuego adecuado eventos
  • soporta flash

Cualquier alternativa y ayuda muy apreciada.

¿Fue útil?

Solución

Aquí hay un buen artículo que está centrado en Selenium explicando diferentes formas de esperar a que las solicitudes de Ajax terminen: http://agilesoftwaretesting.com/?p=111.

Esto es mucho más limpio que tratar de modificar el JS existente. Se puede llamar a cualquiera de los siguientes desde JavaScript directamente, por lo que mientras su marco de automatización admite llamar a JavaScript (que Selenium/WebDriver), simplemente llame a estas funciones, dependiendo de qué bibliotecas AJAX su sitio web esté utilizando:

jQuery: "jQuery.active"

Prototipo: "Ajax.ActiverequestCount"

Dojo: "dojo.io.xmlhttptransport.inflight.length"

Simplemente verifique para asegurarse de que el valor sea 0 y luego continúe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top