0

我正在尝试在弹出的对话框中单击“确定”。我读过 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();
            }
        }
    }
4

1 回答 1

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

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

编辑:终于明白了。

于 2013-01-04T22:45:41.133 回答