public void CloseDialog()
 {
     if (msg == "The webpage you are viewing is trying to close the tab.\n\nDo you want to close this tab?" ||
         msg == "The webpage you are viewing is trying to close the window.\n\nDo you want to close this window?")
     // It does not seem as though this dialog is properly handled, resulting in an uncaught exception
     {
         WinButton yesButton = new WinButton(6, _window.Hwnd); // Not sure if ID will always be 6, but with the current example it is
         if (yesButton.Exists())
         {
             yesButton.Click();
         }
     }
     if (_window != null)
     {
         _window.ForceClose();
     }
 }
예제 #2
0
        /// <summary>
        /// Handles the File upload dialog.
        /// </summary>
        /// <param name="window">The window.</param>
        /// <returns></returns>
        public override bool HandleDialog(Window window)
        {
            if (CanHandleDialog(window))
            {
                var fileNameHandle = NativeMethods.GetChildWindowHwnd(window.Hwnd, "Edit");
                var fileNameHwnd   = new Hwnd(fileNameHandle);

                fileNameHwnd.SetFocus();
                fileNameHwnd.SendString(fileName);

                var openButton = new WinButton(1, window.Hwnd);
                openButton.Click();

                return(true);
            }

            return(false);
        }
예제 #3
0
        /// <summary>
        /// Handles the dialog if the <paramref name="window" /> is a
        /// security alert dialog.
        /// </summary>
        /// <param name="window">The window.</param>
        /// <returns></returns>
        public override bool HandleDialog(Window window)
        {
            if (CanHandleDialog(window))
            {
                NativeMethods.SetForegroundWindow(window.Hwnd);
                NativeMethods.SetActiveWindow(window.Hwnd);

                var buttonOk = new WinButton(1, window.Hwnd);
                if (buttonOk.Exists())
                {
                    buttonOk.Click();
                }
                else
                {
                    var buttonYes = new WinButton(6, window.Hwnd);
                    buttonYes.Click();
                }

                return(true);
            }

            return(false);
        }
예제 #4
0
        private bool HandledDownloadProgressDialog(Window window)
        {
            if (IsDownloadProgressDialog(window))
            {
                DownloadProgressDialog = window;

                var openOrRun = new WinButton(4377, new Hwnd(window.Hwnd));

                if (openOrRun.Enabled)
                {
                    var close = new WinButton(2, new Hwnd(window.Hwnd));
                    close.Click();

                    var actionUntilTimeOut = new TryFuncUntilTimeOut(TimeSpan.FromSeconds(5));
                    actionUntilTimeOut.Try(() => window.Exists());

                    // TODO: What to do if the window doesn't close after timeout?
                }

                return(true);
            }
            return(false);
        }
예제 #5
0
		protected bool ButtonWithId1Exists(IntPtr windowHwnd)
		{
			WinButton button = new WinButton(1, windowHwnd);
			return button.Exists();
		}
예제 #6
0
        protected bool ButtonWithId1Exists(IntPtr windowHwnd)
        {
            WinButton button = new WinButton(1, windowHwnd);

            return(button.Exists());
        }
예제 #7
0
        /// <summary>
        /// Handles the dialogs to download (and save) a file
        /// Mainly used internally by WatiN.
        /// </summary>
        /// <param name="window">The window.</param>
        /// <returns></returns>
        public override bool HandleDialog(Window window)
        {
            // This if handles the File download dialog
            if (!HasHandledFileDownloadDialog && IsFileDownloadDialog(window))
            {
                window.ToFront();
                window.SetActivate();

                DownloadProgressDialog = new Window(window.ParentHwnd);

                WinButton btn = GetButtonToPress(window);
                btn.Click();

                hasHandledFileDownloadDialog = !Exists(window);

                if (HasHandledFileDownloadDialog)
                {
                    Logger.LogAction("Download started at " + DateTime.Now.ToLongTimeString());
                    Logger.LogAction("Clicked " + _optionEnum.ToString());
                }

                return(true);
            }

            // This if handles the download progress dialog
            if (IsDownloadProgressDialog(window))
            {
                DownloadProgressDialog = window;

                WinButton openOrRun = new WinButton(4377, new Hwnd(window.Hwnd));

                if (openOrRun.Enabled)
                {
                    WinButton close = new WinButton(2, new Hwnd(window.Hwnd));

                    close.Click();

                    SimpleTimer timer = new SimpleTimer(5);
                    while (!timer.Elapsed && window.Exists())
                    {
                        Thread.Sleep(200);
                    }
                }

                return(true);
            }

            // This if handles the File save as dialog
            if (IsFileSaveDialog(window))
            {
                Logger.LogAction("Saving Download file as " + saveAsFilename);

                DownloadProgressDialog = new Window(window.ParentHwnd);

                HandleFileSaveDialog(window);

                return(true);
            }

            // Window is not a dialog this handler can handle.
            return(false);
        }
예제 #8
0
		/// <summary>
		/// Handles the dialogs to download (and save) a file
		/// Mainly used internally by WatiN.
		/// </summary>
		/// <param name="window">The window.</param>
		/// <returns></returns>
		public override bool HandleDialog(Window window)
		{
			// This if handles the File download dialog
			if (!HasHandledFileDownloadDialog && IsFileDownloadDialog(window))
			{
				window.ToFront();
				window.SetActivate();

				DownloadProgressDialog = new Window(window.ParentHwnd);

				WinButton btn = GetButtonToPress(window);
				btn.Click();

				hasHandledFileDownloadDialog = !Exists(window);

				if (HasHandledFileDownloadDialog)
				{
					Logger.LogAction("Download started at " + DateTime.Now.ToLongTimeString());
					Logger.LogAction("Clicked " + _optionEnum.ToString());
				}

				return true;
			}

			// This if handles the download progress dialog
			if (IsDownloadProgressDialog(window))
			{
				DownloadProgressDialog = window;

                WinButton openOrRun= new WinButton(4377, new Hwnd(window.Hwnd));

                if (openOrRun.Enabled)
                {
                    WinButton close = new WinButton(2, new Hwnd(window.Hwnd));

                    close.Click();
                    
                    SimpleTimer timer = new SimpleTimer(5);
                    while (!timer.Elapsed && window.Exists())
                    {
                        Thread.Sleep(200);
                    }
                }

				return true;
			}

			// This if handles the File save as dialog
			if (IsFileSaveDialog(window))
			{
				Logger.LogAction("Saving Download file as " + saveAsFilename);

				DownloadProgressDialog = new Window(window.ParentHwnd);

				HandleFileSaveDialog(window);

				return true;
			}

			// Window is not a dialog this handler can handle.
			return false;
		}
예제 #9
0
		private WinButton GetButtonToPress(Window window)
		{
			WinButton btn = null;

			switch (_optionEnum)
			{
				case FileDownloadOptionEnum.Run:
					btn = new WinButton(4426, window.Hwnd);
					break;

				case FileDownloadOptionEnum.Open:
					btn = new WinButton(4426, window.Hwnd);
					break;

				case FileDownloadOptionEnum.Save:
					btn = new WinButton(4427, window.Hwnd);
					if (!btn.Exists())
					{
						btn = new WinButton(4424, window.Hwnd);
					}
					break;

				case FileDownloadOptionEnum.Cancel:
					btn = new WinButton(2, window.Hwnd);
					break;
			}

			return btn;
		}
        public static bool ButtonWithId1Exists(IntPtr windowHwnd)
        {
            var button = new WinButton(1, windowHwnd);

            return(button.Exists());
        }