Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Can WatiN handle the CuteWebUI Uploader popup dialog?
- <OBJECT style="FILTER: alpha(opacity=1); WIDTH: 329px; HEIGHT: 100px; mozOpacity: 0.01; opacity: 0.01; mozopacity: 0.01" data="data:application/x-oleobject;base64, <a bunch of data>" width=329 height=100 type=application/x-silverlight-2></OBJECT>
- <param name="source" value="/CuteWebUI_Uploader_Resource.axd?type=file&file=silverlight.xap&_ver=634334311861475176"/>
- <param name="windowless" value="true" object="" <=""/>
- [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! ============================
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement