如何使用Watin / IE9测试文件下载?
我正在尝试使用 Watin 2.1.0 针对 IE9 测试文件下载。我使用了问题 使用 Watin 下载文件中的建议代码IE9,如下所示:
var downloadHandler = new FileDownloadHandler(fname);
WebBrowser.Current.AddDialogHandler(downloadHandler);
link.ClickNoWait();
downloadHandler.WaitUntilFileDownloadDialogIsHandled(15);
downloadHandler.WaitUntilDownloadCompleted(200);
但是,downloadHandler.WaitUntilFileDownloadDialogIsHandled(15)
调用超时。我应该怎么办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
文件下载对话框在 IE9 (Windows7) NetFramework 4.0 中不起作用。
以下代码片段可能会帮助您解决该问题:
首先,您必须将 UIAutomationClient 和 UIAutomationTypes 引用添加到您的测试项目中。
在Ie9工具之后->查看下载 ->选项定义保存文件夹的路径。
替换 foreach 代码,下一个方法将扩展 Browser 类
如果您想单击“另存为”,用此
编辑 :
此外,如果您需要自动保存为对话框,指定路径并单击“保存”,您可以通过在中断之前添加此代码来实现;
File download dialog doesn't work in IE9 (Windows7) NetFramework 4.0.
Following code snippet might help you resolve the issue:
First you must add references UIAutomationClient and UIAutomationTypes to your test project.
After In Ie9 Tools -> View Downloads -> Options define path to your save folder.
The next method extends Browser class
if you want click 'Save As' replace foreach code with this
Edit:
Also if you need to automate the save as dialog specifying a path and clicking save you can do it by adding this code just before break;
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 中自动下载文件。
IE9 no longer uses a dialog window for saving files. Instead, it uses the notification bar to prevent focus from being removed from the web site. See http://msdn.microsoft.com/en-us/ie/ff959805.aspx under "Download Manager" for reference.
Unfortunately, this means that the current FileDownloadHandler in WatiN will not work. It instantiates a "DialogWatcher" class per browser instance that is a basic message pump for any kind of child window. When child windows are encountered, the DialogWatcher checks to see if the window is specifically a dialog (which the notification bar is not). If it is a dialog, it then iterates over the registered IDialogHandler instances calling "CanHandleDialog." Even if the notification bar were a dialog, it is of a different Window Style (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx), which is how WatiN detects the type of dialog.
From what I can see, there is no support yet for detecting the IE 9 notification bar and its prompts in WatiN. Until that support is added, you will not be able to automate downloading files in IE9.