你好
使用WatiN的人可能也使用DialogHandlers
。
有人可以教我如何分配一个DialogHandler
来处理WatiN控制下特定IE实例的任何警报框 window.alert()
。
DialogHandler只需单击“确定”按钮即可获得非常警告对话框,在这种情况下,我认为我们需要AlertDialogHandler
,基本上只需单击“确定”按钮。
AlertDialogHandler.OKButton.Click()
我在网上搜索并找到了一些例子..但是它们可以工作一小段时间或你指定的时间,我需要一个能永远工作的,直到我选择通过点击按钮来停止它。
这一直困扰我几个小时,任何帮助都表示赞赏。感谢。
注意:有时警报对话框窗口有两个按钮。这就是为什么我真的需要单击确定按钮,而不仅仅是关闭对话框窗口。
答案 0 :(得分: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);
}
}
创建IE
的实例后,将对话框处理程序附加到它:
ie.AddDialogHandler(new OKDialogHandler());
此对话框处理程序将通过单击该按钮来处理包含带有“OK”标题的按钮的所有窗口。