WatiN DialogHandler WaitUntilExists在IE9中超时

时间:2013-01-04 22:39:02

标签: c# .net internet-explorer-9 watin

我正在尝试在弹出的对话框中单击“确定”。我已经读过IE9与WatiN的对话处理程序不兼容。我正在使用WatiN-2.1.0.1196-net-4.0。

以下是我的方法。基本上它会进入警报页面。在该页面上,您可以单击每行单独删除或选中多个复选框并批量删除。我抓住了各个警报删除按钮集合中的第一个删除按钮,并检查它是否存在。如果是,请单击全选按钮,然后单击删除所有选定的警报按钮。

一切似乎都达到了这一点,确认删除的对话框现在已经启动。然后该方法在browser.waituntilexists()上超时。

我已经尝试增加等待时间,并且我尝试将处理程序类型切换为DialogHandler,ConfirmDialogHandler,AlertDialogHandler等。它们似乎都没有找到弹出的对话框窗口。

我需要一个解决方法才能确认此对话框。

    private void DeleteAlerts(Browser browser)
    {
        browser.GoTo(URLs.CompleteUrl + "/alerts.aspx?apid=" + PID);
        while (browser.Page<AlertsAspx>().deleteMessage.Exists)
        {
            var handler = new ConfirmDialogHandler();
            browser.Page<AlertsAspx>().SelectAll.Click();
            using (new UseDialogOnce(browser.DialogWatcher, handler))
            {
                //Assert.Fail("Never Sees Dialog");
                browser.Page<AlertsAspx>().Delete.ClickNoWait();
                handler.WaitUntilExists(50);
                handler.OKButton.Click();
                browser.WaitForComplete();
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

这是一种快速的肮脏方式:

    public void ConfirmOKTest()
{
    using (IE ie = new IE("http://localhost/confirmtest.htm"))
    {
        ConfirmDialogHandler handler = new ConfirmDialogHandler();
        using (new UseDialogOnce(ie.DialogWatcher, handler))
        {
            ie.Button("myButton1").ClickNoWait();
            handler.WaitUntilExists();
            handler.OKButton.Click();
        }
        ie.WaitForComplete();
        Assert.AreEqual("Clicked OK", ie.Button("myButton1").Text);
    }
}

编辑: 我不知道为什么我的代码没有格式化。

编辑:终于搞定了。