2012-02-15 8 views
5

WatiN otomatik testlerimi kullanarak, kullanıcıyı yanlışlıkla sayfadan değişiklikleri kaydetmeden koruyan bir sayfa sürmek için genişletmek istiyorum.WatiN IE'yi kullanıyor "Bu sayfadan ayrılmak istediğinizden emin misiniz?" popup

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

Benim watin testi IE kullanarak sayfayı yönlendirdiğini:

sayfa kullanıcıdan onay aramaya "beforeunload" tekniği kullanır. WatIn'u pop-up diyaloğa eklemek için bir yol bulamıyorum, böylece testimden kontrol edebiliyorum.

tüm (kodlanmış dizeleri ben açılır pencere üzerinde görebileceğiniz dizeleri bakın nerede) başarısız olmuş şu:

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

teşekkürler!

cevap

9

İletişim işleyicisini oluşturup eklemeniz gerekir.

Örnek git örneği sitesine, bağlantıyı tıklayarak onay iletişim üzerine izni sayfayı tıklayı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); 

yukarıdaki WatiN2.1, IE9, Win7 üzerinde çalışıyor. IE8 veya daha önce kullanıyorsanız, Ie9 özel işleyici yerine ReturnDialogHandler nesnesini kullanmanız gerekecektir.

+0

Teşekkürler, bu bir cazibe gibi çalıştı! ReturnDialogHandlerIe9 sınıfının varlığından nasıl haberdar olabileceğimi merak ediyorum. Farkında olmadığım bir yerdeki bazı önemli belgeler var mı? – MrBlueSky

+0

Belirsiz bir şekilde IE9 çıktığında e-posta listesinde Jeroen ile bir konuşma olduğunu hatırlıyorum. Bu bellekle Visual Studio'nun IntelliSense aracılığıyla mevcut İşleyicilere baktığımda noktaları (biraz şansla) bağlayabiliyordum ve posta listesi arşivindeki konuşmayı bulup yukarıdaki çalışma örneğini bir araya getirebiliyordum. – OCary

+0

Posta listesi görüşmesi: http://sourceforge.net/mailarchive/forum.php?thread_name=BANLkTinLz35Gf1YxZRrdkNV621nV_sx%3DNw%40mail.gmail.com&forum_name=watin-users – OCary