我正在使用最新的4/12/2011 WatiN(2.1.0.1196)版本。
我将一个aspx页面加载到Dynamics Crm中的IFrame中。页面上有一个打开的按钮和模式对话框。到目前为止,除了特定的用例外,大多数测试用例都与WatiN一起正常工作。
如果在模态对话框中设置了特定的控件组合,则在用户按下提交按钮后会弹出确认对话框。如果用户选择ok,它将继续提交执行,如果取消它将返回到模态对话框。出现此确认对话框时,测试超时。我似乎无法正确处理确认对话框。
这是我一直在尝试的测试方法:
[TestMethod]
public void Add_New_Post_To_Record_Public_NotOnBehalf_NoSub_No_Notifications()
{
using (var browser = new IE("URL to the IFRAME"))
{
var approveConfirmDialog = ReturnDialogHandler.CreateInstance();
var confirmCode = Guid.NewGuid();
//logon to CRM
logonToADFS(browser);
var recordPage = browser.Page<DiscussionRecordpage>();
recordPage.CreateNewPostButton.ClickNoWait();
HtmlDialog dialog = browser.HtmlDialog(Find.ByTitle("New Post"));
var messageText = dialog.TextField(Find.ByClass("required"));
messageText.TypeText("Type some text. Confirmation code: " + confirmCode.ToString());
var button = dialog.Button(Find.ByClass("submit-button"));
using (new UseDialogOnce(browser.DialogWatcher, approveConfirmDialog))
{
button.ClickNoWait();
approveConfirmDialog.WaitUntilExists();
approveConfirmDialog.OKButton.Click();
}
browser.WaitForComplete();
Assert.IsTrue(browser.ContainsText(confirmCode.ToString()));
}
}
我尝试了几种不同的变体,但结果相同。我假设我需要使用ReturnDialogHanlder.CreateInstance()方法来兼容IE9,但标准的ConfirmDialogHandler似乎也没有用。老实说,我不知道在这种情况下我是否正确使用对话框处理程序,但我可以单击其他页面上按钮生成的其他确认对话框上的ok按钮。这有点独特,因为它是从模态对话框而不是页面产生的。
我也尝试过使用这个自定义处理程序(C# WatiN - Add an AlertDialogHandler to click ok button on every Alert dialog window)而没有结果。
提前致谢。