2012-02-15 16 views
5

Tôi muốn mở rộng các thử nghiệm tự động WatiN của mình để hướng một trang bảo vệ người dùng vô tình rời khỏi trang mà không lưu thay đổi.WatiN thúc đẩy trình duyệt IE "Bạn có chắc chắn muốn rời khỏi trang này không?" popup

Trang sử dụng "beforeunload" kỹ thuật để tìm kiếm xác nhận từ người sử dụng:

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

My WatiN thử nghiệm đang thúc đẩy các trang sử dụng IE. Tôi không thể tìm cách để WatIn đính kèm vào hộp thoại bật lên để tôi có thể kiểm soát nó từ bài kiểm tra của mình.

Tất cả những điều sau đây đã thất bại (nơi chuỗi mã hóa cứng tham khảo chuỗi mà tôi có thể nhìn thấy trên cửa sổ bật lên):

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

Cảm ơn!

Trả lời

9

Bạn cần phải tạo và thêm trình xử lý hộp thoại.

Ví dụ Tới dụ trang web, nhấp vào liên kết, bấm trang nghỉ trên hộp thoại xác nhậ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); 

Trên đây đang làm việc trên WatiN2.1, IE9, Win7. Nếu sử dụng IE8 hoặc trước đó, bạn có thể sẽ cần phải sử dụng đối tượng ReturnDialogHandler thay vì trình xử lý cụ thể Ie9

+0

Cảm ơn, điều đó đã hoạt động như một sự quyến rũ! Tôi tò mò về cách tôi (hoặc bạn!) Có thể đã biết về sự tồn tại của lớp ReturnDialogHandlerIe9? Có một số tài liệu quan trọng ở đâu đó mà tôi không biết? – MrBlueSky

+0

Tôi mơ hồ nhớ có một cuộc trò chuyện với Jeroen trong danh sách gửi thư khi IE9 xuất hiện. Giữa bộ nhớ đó và xem xét các Trình xử lý có sẵn thông qua IntelliSense của VisualStudio, tôi có thể kết nối các dấu chấm (với một chút may mắn) và tìm thấy cuộc hội thoại trên lưu trữ danh sách gửi thư và sau đó đặt cùng ví dụ làm việc ở trên. – OCary

+0

Cuộc trò chuyện danh sách gửi thư: http://sourceforge.net/mailarchive/forum.php?thread_name=BANLkTinLz35Gf1YxZRrdkNV621nV_sx%3DNw%40mail.gmail.com&forum_name=watin-users – OCary