代码之家  ›  专栏  ›  技术社区  ›  Fábio Antunes

C#WatiN-添加AlertDialogHandler,以便在每个警报对话框窗口上单击“确定”按钮

  •  10
  • Fábio Antunes  · 技术社区  · 14 年前

    那些曾经 WatiN DialogHandlers .

    有人能教我怎么分配 DialogHandler window.alert() 在WatiN控制下的特定IE实例的。

    DialogHandler只需点击OK按钮,就可以打开一个非常警报的对话框,在这种情况下,我想我们需要一个 AlertDialogHandler 基本上只需点击OK按钮。

    AlertDialogHandler.OKButton.Click()
    

    我在网上搜索了一下,找到了几个例子。。但它们只工作一小段时间或您指定的时间,我需要一个将永远工作,直到我选择停止它点击一个按钮。

    这已经困扰了我好几个小时了,任何帮助都将不胜感激。谢谢。

    注:

    1 回复  |  直到 14 年前
        1
  •  17
  •   prostynick    14 年前

    public class OKDialogHandler : BaseDialogHandler
    {
        public override bool HandleDialog(Window window)
        {
            var button = GetOKButton(window);
            if (button != null)
            {
                button.Click();
                return true;
            }
            else
            {
                return false;
            }
        }
    
        public override bool CanHandleDialog(Window window)
        {
            return GetOKButton(window) != null;
        }
    
        private WinButton GetOKButton(Window window)
        {
            var windowButton = new WindowsEnumerator().GetChildWindows(window.Hwnd, w => w.ClassName == "Button" && new WinButton(w.Hwnd).Title == "OK").FirstOrDefault();
            if (windowButton == null)
                return null;
            else
                return new WinButton(windowButton.Hwnd);
        }
    }
    

    创建的实例后 IE ,将对话框处理程序附加到它:

    ie.AddDialogHandler(new OKDialogHandler());
    

    此对话框处理程序将通过单击包含“确定”标题的按钮来处理所有窗口。