Estoy escribiendo WatiN pruebas para probar una aplicación web Ajax y he encontrado un problema de tiempo con las solicitudes de Ajax.¿Cómo esperar las solicitudes jQuery Ajax para completar desde WatiN?
Después de que se active una solicitud Ajax por una acción en la página, me gustaría que WatiN espere hasta que se complete la solicitud antes de validar que la página se actualizó correctamente.
Tengo la sensación de que la solución implicará eval-ing JavaScript a registrar manejadores de $.ajaxStart
y $.ajaxComplete
para rastrear si las solicitudes están en curso. Voy a profundizar en eso en breve, pero quería ver si alguien más ya ha resuelto esto. Parece que sería un problema común con las pruebas de Ajax.
Esta solución funciona bien a menos que una o más solicitudes ajax comiencen antes de que se instale el monitor javascript (en cuyo momento el contador ya no es preciso). No sé cómo inyectar el monitor antes en el proceso de WatiN. Es posible que la mejor opción sea incluir condicionalmente el monitor justo después de incluir jquery cuando se ejecutan las pruebas. –
Puse los controladores de eventos ajax globales en la página maestra de mi aplicación. También solo conservo un bit de semaphone en lugar de un contador: http://lebobitz.wordpress.com/2011/03/06/synchronizing-watin-and-ajax-with-jquery/ –
Sin embargo, hay un problema con el código: si el sitio web no tiene soporte jQuery (como en mi caso) - es posible que desee "inyectarlo" primero. Simplemente agregue este código antes de la "secuencia de comandos del monitor". const string jquerry = @ "var element1 = document.createElement ('script'); element1.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js'; element1.type = 'text/javascript'; document.getElementsByTagName ('head') [0] .appendChild (element1); "; browser.Eval (jquerry); – Alex