问题描述
|
我正在使用WatiN(2.1.0.1196)的最新版本4/12/2011。
我有一个aspx页面加载到Dynamics Crm的IFrame中。页面上有一个打开的按钮和模式对话框形式。到目前为止,除特定的用例外,大多数测试用例都可以在WatiN上正常工作。
如果在模式对话框中设置了特定的控件组合,则在用户按下“提交”按钮后将弹出确认对话框。如果用户选择确定,它将继续提交执行,如果取消,它将返回到模式对话框。当此确认对话框出现时,测试超时。我似乎无法正确设置处理程序以捕获确认对话框。
这是我一直在尝试的一种测试方法:
[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似乎也不起作用。老实说,我不知道在这种情况下是否正确使用了对话框处理程序,但是我可以单击其他确认对话框中的“确定”按钮,这些按钮是由其他页面上的按钮生成的。这是唯一的,因为它是从模式对话框而不是页面生成的。
我也尝试使用此自定义处理程序(C#WatiN-添加AlertDialogHandler以在每个“警报”对话框窗口上单击“确定”按钮),但没有结果。
提前致谢。
解决方法
太难了。我建议一种解决方法:在大多数情况下,您可以使用键盘关闭对话框。因此您可以使用sendkey来关闭对话框。仅供参考。