我正在尝试针对IE9使用Watin 2.1.0测试文件下载。我使用了从可接受的答案到问题Downloading a file with Watin in IE9的建议代码,如下所示:

var downloadHandler = new FileDownloadHandler(fname);
WebBrowser.Current.AddDialogHandler(downloadHandler);
link.ClickNoWait();
downloadHandler.WaitUntilFileDownloadDialogIsHandled(15);
downloadHandler.WaitUntilDownloadCompleted(200);

但是,downloadHandler.WaitUntilFileDownloadDialogIsHandled(15)调用超时。我应该怎么办?

最佳答案

IE9不再使用对话框窗口来保存文件。而是使用通知栏防止焦点从网站上移开。请参阅“下载管理器”下的http://msdn.microsoft.com/en-us/ie/ff959805.aspx以获取引用。

不幸的是,这意味着WatiN中当前的FileDownloadHandler将无法工作。它为每个浏览器实例实例化一个“DialogWatcher”类,它是任何子窗口的基本消息泵。遇到子窗口时,DialogWatcher会检查该窗口是否专门是对话框(通知栏不是)。如果是对话框,则它将遍历调用“CanHandleDialog”的已注册IDialogHandler实例。即使通知栏是对话框,它也具有不同的窗口样式(http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx),这就是WatiN检测对话框类型的方式。

据我所知,尚不支持在WatiN中检测IE 9通知栏及其提示。在添加该支持之前,您将无法在IE9中自动下载文件。

关于c# - 如何使用Watin/IE9测试文件下载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7500339/

10-11 15:59