Watin的2.1版本增加了一个新的静态方法ReturnDialogHandler.CreateInstance(),它应该为任何版本的IE获得正确的对话处理程序.我无法弄清楚如何实现此方法.
以下代码从Question Here开始不会在IE9中下载该文件.
using(IE IE = new IE(someUrlToGoTo)){ fileDownloadHandler fileDownloadHandler = new fileDownloadHandler(fullfilename); IE.AddDialogHandler(fileDownloadHandler); IE.link("startDownloadlinkID").ClickNowait(); fileDownloadHandler.WaitUntilfileDownloadDialogIsHandled(15); fileDownloadHandler.WaitUntilDownloadCompleted(200);}
以下代码从Question Here开始不会在IE9中下载该文件.但是,我并不是100%确定应该使用什么“CANCEL_link”.我尝试使用文件名,文件路径下载等.
var cancel = browser.link(Find.ByUrl(CANCEL_link));var confirmDialog = new ConfirmDialogHandler();using (new UseDialogonce(browser.DialogWatcher,confirmDialog)){ cancel.ClickNowait(); confirmDialog.WaitUntilExists(); confirmDialog.OKbutton.Click(); browser.WaitForComplete();}
更新1
我也尝试使用SendKeys手动保存文件而不使用WatiN,它似乎不一致.它每次都有些不同,有些时候甚至没有下载文件.有几次它不重命名文件,但会下载它.这里的代码:
System.windows.Forms.SendKeys.SenDWait("%N"); // Selects Notification barSystem.windows.Forms.SendKeys.SenDWait("{TAB}");System.windows.Forms.SendKeys.SenDWait("{DOWN 2}"); // Save As OptionSystem.windows.Forms.SendKeys.SenDWait("{ENTER}");System.windows.Forms.SendKeys.SenDWait("Downloadedfile.txt"); // Enters file nameSystem.windows.Forms.SendKeys.SenDWait("{ENTER}");
更新2:3/19
我已经尝试过KMoraz列出的建议,但也无法使用它们中的任何一个.我尝试使用IE.GoTo(filePathoffile)转到确切的文件路径,或者通过ID查找,它确实找到了文件,但不会启动下载.看来我可以正确找到该文件,但它不会下载它.我可以做一些乱序吗?
更新后的尝试:
string fullfilename = "https://mywebsite.com/files/area/download/importantfile.ZIP";browser.GoTo(fullfilename);fileDownloadHandler fileDownloadHandler = new fileDownloadHandler(fullfilename);browser.AddDialogHandler(fileDownloadHandler);fileDownloadHandler.WaitUntilfileDownloadDialogIsHandled(15);fileDownloadHandler.WaitUntilDownloadCompleted(200);
我得到以下异常:WatiN Exception没有透露… 15秒后没有显示对话框.通过使用GoTo,它不会将页面带到下载页面,但该文件位于通知栏中,可以下载.有什么想法吗?
有关该站点的更多信息:我必须使用登录名和密码登录https站点.登录后,我进入主页面,其中有“下载当天的文件”链接.我点击文本下载当前文件.点击此链接后,您将转到下载页面.该文件将d出通知栏,以便在IE中下载.还有一个链接“如果没有出现下载窗口,请点击下载文件”.可以直接单击它以使文件出现在通知栏中以下载文件.
解决方法 关键是找到正确的元素以及如何调用它.如果此行不起作用:
IE.link("startDownloadlinkID").ClickNowait();
您的控件可能属于不同类型:
IE.button(Find.ByID("startDownloadlinkID")).ClickNowait();
或者您可以尝试直接下载:
IE.GoTo(fullfilename);
关键是你必须抓住你需要的控制类型.您可以查询IE.Elements直到找到它.或者,如果已知ID,name或type,则使用Find.By *方法之一.
总结以上是内存溢出为你收集整理的C#WatiN下载文件IE9全部内容,希望文章能够帮你解决C#WatiN下载文件IE9所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)