2012-02-15 17 views
5

Me gustaría extender mis pruebas automatizadas WatiN para conducir una página que protege contra el usuario que accidentalmente abandona la página sin guardar los cambios.WatiN manejando el IE "¿Estás seguro de que quieres salir de esta página?" popup

la página utiliza la técnica de "beforeunload" para buscar la confirmación por parte del usuario:

$(window).bind('beforeunload', function (event) { 
    if (confirmationRequired) { 
     return "Sure??"; 
    } 
}); 

prueba Mi Watin está impulsando la página utilizando IE. No puedo encontrar una manera de hacer que WatIn se adjunte al diálogo emergente para que pueda controlarlo desde mi prueba.

Todos los siguientes han fallado (donde las cuerdas no modificables se refieren a cadenas que puedo ver en la ventana emergente):

Browser.AttachTo<IE>(Find.ByTitle("Windows Internet Explorer"); 
browser.HtmlDialog(Find.FindByTitle("Windows Internet Explorer)); 
browser.HtmlDialog(Find.FindByTitle("Are you sure you want to leave this page?)); 
browser.HtmlDialog(Find.FindFirst()); 

Gracias!

Respuesta

9

Tendrá que crear y agregar el controlador de diálogo.

Ejemplo Ir al sitio de ejemplo, haga clic en enlace, haga clic en la página excedencia de diálogo de confirmación:

IE browser = new IE(); 
browser.GoTo("http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm"); 

WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9 myHandler = new WatiN.Core.DialogHandlers.ReturnDialogHandlerIe9(); 

browser.AddDialogHandler(myHandler); 
browser.Link(Find.ByUrl("http://www.microsoft.com")).ClickNoWait(); 
myHandler.WaitUntilExists(); 

myHandler.OKButton.Click(); 
browser.RemoveDialogHandler(myHandler); 

Lo anterior está trabajando en WatiN2.1, IE9, Win7. Si usa IE8 o anterior, es probable que necesite utilizar el objeto ReturnDialogHandler en lugar del manejador específico Ie9

+0

¡Gracias, eso funcionó como un amuleto! Tengo curiosidad acerca de cómo yo (¡o usted!) Podría haber sabido sobre la existencia de la clase ReturnDialogHandlerIe9? ¿Hay alguna documentación clave en algún lugar del que no tenga conocimiento? – MrBlueSky

+0

Recordaba vagamente haber tenido una conversación con Jeroen en la lista de correo cuando salió IE9. Entre esa memoria y mirando los Handlers disponibles a través del IntelliSense de VisualStudio, pude conectar los puntos (con un poco de suerte) y encontrar la conversación en el archivo de la lista de correo y luego preparar el ejemplo de trabajo anterior. – OCary

+0

Conversación de la lista de correo: http://sourceforge.net/mailarchive/forum.php?thread_name=BANLkTinLz35Gf1YxZRrdkNV621nV_sx%3DNw%40mail.gmail.com&forum_name=watin-users – OCary

Cuestiones relacionadas