我正在尝试在弹出的对话框中单击“确定”。我已经读过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();
}
}
}
答案 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);
}
}
编辑: 我不知道为什么我的代码没有格式化。
编辑:终于搞定了。