C#WatiN下载文件IE9

C#WatiN下载文件IE9,第1张

概述我试图在IE9中使用带有C#4.0的Watin v2.1下载文件,我没有运气.还有其他问题询问类似的问题,但没有其他答案在我的情况下正确下载文件,我已经厌倦了所有. Watin的2.1版本增加了一个新的静态方法ReturnDialogHandler.CreateInstance(),它应该为任何版本的IE获得正确的对话处理程序.我无法弄清楚如何实现此方法. 以下代码从Question Here开始 我试图在IE9中使用带有C#4.0的Watin v2.1下载文件,我没有运气.还有其他问题询问类似的问题,但没有其他答案在我的情况下正确下载文件,我已经厌倦了所有.

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存