【问题标题】:C# WatiN - Add an AlertDialogHandler to click ok button on every Alert dialog windowC# WatiN - 添加一个 AlertDialogHandler 以在每个警报对话框窗口上单击确定按钮
【发布时间】:2010-08-11 00:11:06
【问题描述】:

你好

那些用过WatiN的人可能也用过DialogHandlers

谁能教我如何分配一个DialogHandler 来处理WatiN 控制下特定IE 实例的任何警报框window.alert()

DialogHandler 只需要单击 OK 按钮即可获得非常警报的对话框,在这种情况下,我认为我们需要一个 AlertDialogHandler,基本上只需单击 OK 按钮。

AlertDialogHandler.OKButton.Click()

我在网上搜索并找到了一些示例。但它们的工作时间很短或您指定的时间,我需要一个可以永久工作的,直到我选择通过单击按钮来停止它。

这一直困扰着我几个小时,感谢任何帮助。谢谢。

注意:有时警报对话框窗口有两个按钮。这就是为什么我真的需要点击确定按钮,而不仅仅是关闭对话窗口。

【问题讨论】:

    标签: c# watin


    【解决方案1】:

    创建类:

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

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

    【讨论】:

    • @prostynick - 我也可以知道 WindowsEnumerator 属于哪个类吗?它似乎是您的 OKDialogHandler 类的症结所在。- 哦!我在 BaseDialogHandler 中找到了它。谢谢!
    • 不,我错了。我没有在 BaseDialogHandler 中找到 WindowsEnumerator,而是在 WatiN.Core.Native.InternetExplorer 中找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多