2009-07-29 8 views
5

Estoy tratando de probar usando QTP una aplicación web que está usando ajax4jsf para implementar las características de ajax. QTP no tiene la capacidad de reconocer cuando el ajax había terminado. He leído que el kit de herramientas de extensibilidad web que se proporciona con QTP 9.5 y QTP 10 es la solución para mi problema. Sin embargo, no puedo entender cómo esto puede ayudarme: necesito saber el estado de listo del objeto httpRequest y continuar la prueba cuando el estado es 'completo'. Pero no sé cómo llegar a httpRequest desde el kit de herramientas de extensibilidad web. Cualquier ayuda sería apreciada.QTP extensibilidad Web toolkit y ajax

Respuesta

2

Gracias por sus respuestas.

Logramos resolver nuestro problema utilizando el kit de herramientas QTP Extensibilty: A4j utiliza una cola de oyentes que se despiertan antes y después de ajax (Dependiendo del tipo de oyente). En nuestra solución, implementamos una función Jscript para cada componente ajax (por ejemplo, webButton):
1. Inicialice una variable global en 0
2.registra una nueva función como oyente de tipo onafterajax:

_elem.ownerDocument.parentWindow.A4J.AJAX.AddListener({ 
     onafterajax: function(req, event, data) { 
      globalVariable = 1; 
     } 
    }); 
  1. Haga clic en el botón
  2. entrar en una especie de bucle de espera ocupada:

    while (globalVariable != 1) { 
        _util.Wait(250); 
    } 
    

La función que registramos se invoca cuando termina el ajax y cambia la variable global para que salga el ciclo while. Sé que esto es feo, pero funciona muy bien.

Nuestro único problema es que QTP 10 implementa _util.wait mientras que QTP 9.5 no. Sin la espera, el navegador quedará atrapado en un bucle infinito y nunca se llamará a la función registrada. Cualquier solución con respecto a la implementación de una espera de espera no ocupada en Jscript sería muy apreciada.

2

De acuerdo con mi experiencia en la automatización de pruebas para una aplicación basada en web con llamadas AJAX, le sugiero que considere lo siguiente.

  1. mecanismo de reconocimiento de objetos del plan de ahorro está buscando interfaz gráfica de usuario de Windows objetos con la manija. Por lo tanto, siempre que sea posible, use solo objetos GUI. Si prueba manualmente, tampoco llegará al objeto XmlHttpRequest, pero no le impedirá realizar pruebas funcionales. Aún puede sincronizar en una variedad de eventos según el cambio de propiedades de los objetos de la GUI. Por ejemplo. "loading ..." apareció o desapareció una imagen o texto. La lista desplegable dejó de agregar nuevos elementos. El botón se activa/desactiva.

  2. Si esta es su aplicación interna, puede desarrollar un soporte más amigable para QTP, y aquí puede usar las guías del juego de herramientas de extensibilidad. Además, como una opción de compilación de prueba, puede incluir un objeto GUI (imagen invisible o elemento de texto) y usarlo para indicar los estados de las transacciones AJAX.

  3. Finalmente, puede acceder a DOM directamente para llegar a objetos que no son de GUI aunque no tengo información sobre el uso del objeto XmlHttpRequest de esta manera.

Gracias, Albert Gareev

Cuestiones relacionadas