C#WatiN - 添加AlertDialogHandler以在每个Alert对话框窗口中单击ok按钮

Fáb*_*nes 10 c# watin

你好

那些使用过WatiN的人也可能会使用DialogHandlers.

那么有人可以教我如何分配一个DialogHandler将处理window.alert()WatiN控制下的特定IE实例的任何警报框.

DialogHandler只需要在OK按钮中单击非常警告对话框,在这种情况下我认为我们需要一个AlertDialogHandler基本上只需单击确定按钮.

AlertDialogHandler.OKButton.Click()
Run Code Online (Sandbox Code Playgroud)

我在网上搜索并找到了一些例子..但是它们可以工作一小段时间或你指定的时间,我需要一个能永远工作的,直到我选择通过点击一个按钮来停止它.

这一直困扰我几个小时,任何帮助表示赞赏.谢谢.

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

pro*_*ick 17

创建类:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

ie.AddDialogHandler(new OKDialogHandler());
Run Code Online (Sandbox Code Playgroud)

此对话框处理程序将通过单击该按钮来处理所有窗口,其中包含带有"OK"标题的按钮.