Can WatiN handle the CuteWebUI Uploader popup dialog? [TestMethod] public void SomeTest() { Settings.MakeNewIeInstanceVisible = true; Settings.AutoStartDialogWatcher = true; Settings.AutoMoveMousePointerToTopLeft = false; using (IE ie2 = new IE()) { ie2.GoTo(URL); ie2.Link(SomeButtonID).Click(); ie2.Image(AnotherButtonID).FireEvent("onclick"); // some debugging code wrapped around the next user action // which is clicking on the attach file button var helper = new DialogHandlerHelper(); using (new UseDialogOnce(ie2.DialogWatcher, helper)) { Thread.Sleep(1 * 1000); // wait for attach button to be "ready" // Click button that triggers the dialog that states: // "file browsing dialog has been blocked" // "please click here and try again" // ie2.Button(FileAttachButtonID).FireEvent("onclick"); } foreach(string dialogHandler in helper.CandidateDialogHandlers) { // nothing prints out here :( Console.Out.WriteLine(dialogHandler); } // debug print out all elements with tagname = object foreach (Element objectElement in ie2.ElementsWithTag("object")) { StringBuilder elementInfo = new StringBuilder(); elementInfo.AppendLine("--------------------------------------------"); elementInfo.AppendLine("element.tagname = " + objectElement.TagName); elementInfo.AppendLine("element.style = " + objectElement.Style); elementInfo.AppendLine("element.type = " + objectElement.GetAttributeValue("type")); elementInfo.AppendLine("element.data = " + objectElement.GetAttributeValue("data")); elementInfo.AppendLine("--------------------------------------------"); Console.Out.WriteLine(elementInfo.ToString()); // none of these clicks make the dialog go away objectElement.ClickNoWait(); objectElement.Click(); objectElement.DoubleClick(); objectElement.MouseEnter(); objectElement.MouseDown(); Thread.Sleep(500); objectElement.MouseUp(); } // wait to see if dialog disappears after click Thread.Sleep(300 * 1000); } } // Attach the IE instance used by WatiN to White InternetExplorerFactory.Plugin(); string title = "[browser title here]"; // will be something like "WatinWhiteHybrid - Internet Explorer provided by ..." var ie = (InternetExplorerWindow)Application.Attach(watin.ProcessID).GetWindow(title); White.WebBrowser.Silverlight.SilverlightDocument sl = ie.SilverlightDocument; // Click the button in the silverlight control using White sl.Get(SearchCriteria.ByAutomationId("ClickMeId")).Click(); FileUploadDialogHandler helper = new FileUploadDialogHandler(attachmentPath); using (new UseDialogOnce(ie.DialogWatcher, helper)) { Thread.Sleep(1 * 1000); // wait for attach button to be "ready" ie.Button(browseButtonID).FireEvent("onclick"); // When automating a file upload, there is a Silverlight popup in IE that forces an extra click // before opening the file open dialog. WatiN does not support Silverlight automation // and the popup element was acting quirky in Microsoft's Coded UI Test, so we find the // dialog box UNDERNEATH the Silverlight popup and force one, lovely, mouse click. //===== Entering Coded UI Test land, beware! ===================================== // initialize Coded UI Test Playback.Initialize(); BrowserWindow.CurrentBrowser = "IE"; Process watinBrowserProcess = Process.GetProcessById(ie.ProcessID); BrowserWindow cuitBrowser = BrowserWindow.FromProcess(watinBrowserProcess); // attach Coded UI Test to the IE browser WatiN initialized // get the window underneath the Silverlight popup UITestControl modalUnderSilverlightPopup = new UITestControl(cuitBrowser.CurrentDocumentWindow); modalUnderSilverlightPopup.SearchProperties.Add("id", windowElementUnderPopupID); // get the X and Y pixel center of the window int centerX = modalUnderSilverlightPopup.BoundingRectangle.X + modalUnderSilverlightPopup.BoundingRectangle.Width / 2; int centerY = modalUnderSilverlightPopup.BoundingRectangle.Y + modalUnderSilverlightPopup.BoundingRectangle.Height / 2; // Click! Mouse.Click(new Point(centerX, centerY)); // Shutdown Coded UI Test Playback.Cleanup(); //===== End Coded UI Test land, you survived! yay! ============================ }