使用Watin,我正在尝试处理确认对话框并告诉watin按"OK".这在互联网上有很好的记录 - 你使用ConfirmDialogHandler和UseDialogOnce方法..除了它不适合我.我收到以下错误:
WatiN.Core.Exceptions.WatiNException: Dialog not available within 5 seconds
我正在使用watin 2.0 beta atm,但我之前使用的是早期版本的1.X,它有同样的问题.在运行64位Vista的同事机器上测试,我正在运行64位Windows 7.
代码如下所示:
using (IE ie = new IE("http://localhost/TestApp/TestConfirmPage.asp"))
{
var approveConfirmDialog = new ConfirmDialogHandler();
using (new UseDialogOnce(ie.DialogWatcher, approveConfirmDialog))
{
ie.Button(Find.ByName("btn")).ClickNoWait();
approveConfirmDialog.WaitUntilExists(5);
approveConfirmDialog.OKButton.Click();
}
ie.WaitForComplete();
}
Run Code Online (Sandbox Code Playgroud)
ASP页面非常简单,它包含一个强制确认的按钮,如下所示:
<input type="button" name="btn" id="btn" value="Click me" onclick="ConfirmApp()" />
Run Code Online (Sandbox Code Playgroud)
并且ConfirmApp已被剥离进行测试,以便现在它包含的是:
bOK = confirm("You clicked a popup. Did you mean to?");
return bOK;
Run Code Online (Sandbox Code Playgroud)
and*_*eja 11
代码看起来很好,我认为它应该工作.唯一的想法是我做了不同的事情就是使用Dialog块将Wait for Complete置于内部.不知道为什么,但在我这样做之前我也有一些问题,有时它有效但有时却没有.并且我在等到存在时不使用时间限制.但你可能已经尝试过了那个.
例如:
using (new UseDialogOnce(ie.DialogWatcher, approveConfirmDialog))
{
ie.Button(Find.ByName("btn")).ClickNoWait();
approveConfirmDialog.WaitUntilExists();
approveConfirmDialog.OKButton.Click();
ie.WaitForComplete();
}
Run Code Online (Sandbox Code Playgroud)