2012-02-15 6 views
5

Chciałbym rozszerzyć moje automatyczne testy WatiN, aby kierować stroną chroniącą użytkownika przed przypadkowym opuszczeniem strony bez zapisywania zmian.WatiN napędza IE "Czy na pewno chcesz opuścić tę stronę?" popup

Strona wykorzystuje technikę „beforeunload” szukać potwierdzenia od użytkownika:

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

przetestować Watin napędza stronę za pomocą IE. Nie mogę znaleźć sposobu, aby zachęcić WatIn do dołączenia do wyskakującego okna dialogowego, aby móc kontrolować to z mojego testu.

wszystkie następujące zawiodły (gdzie zakodowane ciągi odnoszą się do łańcuchów, które widzę na popup):

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()); 

Dzięki!

Odpowiedz

9

Musisz utworzyć i dodać obsługę okna dialogowego.

Przykład Idź na przykład witryny, kliknij łącze, kliknij stronę pozostawić na oknie potwierdzenia:

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); 

Powyższy pracuje nad WatiN2.1, IE9, Win7. Jeśli używasz IE8 lub wcześniej, prawdopodobnie będziesz musiał użyć obiektu ReturnDialogHandler zamiast specyficznego handlarza Ie9.

+0

Dzięki, że zadziałało jak czar! Ciekawi mnie, jak ja (lub ty!) Mogliśmy wiedzieć o istnieniu klasy ReturnDialogHandlerIe9? Czy jest jakaś kluczowa dokumentacja, której nie znam? – MrBlueSky

+0

Niejasno pamiętałem, że rozmowa z Jeroenem na liście mailingowej pojawiła się po wydaniu IE9. Pomiędzy tą pamięcią a przeglądaniem dostępnych Handlerów za pomocą IntelliSense VisualStudio udało mi się połączyć kropki (przy odrobinie szczęścia) i znaleźć rozmowę w archiwum listy mailingowej, a następnie połączyć powyższy przykład roboczy. – OCary

+0

Rozmowa na listę dyskusyjną: http://sourceforge.net/mailarchive/forum.php?thread_name=BANLkTinLz35Gf1YxZRrdkNV621nV_sx%3DNw%40mail.gmail.com&forum_name=watin-users – OCary