C#WatiN下载文件IE9
我试图在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 Bar System.Windows.Forms.SendKeys.SendWait("{TAB}"); System.Windows.Forms.SendKeys.SendWait("{DOWN 2}"); // Save As Option System.Windows.Forms.SendKeys.SendWait("{ENTER}"); System.Windows.Forms.SendKeys.SendWait("DownloadedFile.txt"); // Enters File Name System.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站点.登录后,我进入主页面,其中有“下载当天的文件”链接.我点击文本下载当前文件.点击此链接后,您将转到下载页面.该文件将弹出通知栏,以便在IE中下载.还有一个链接“如果没有出现下载窗口,请点击下载文件”.可以直接单击它以使文件出现在通知栏中以下载文件. 解决方法
关键是找到正确的元素以及如何调用它.
如果此行不起作用: ie.Link("startDownloadLinkId").ClickNoWait(); 您的控件可能属于不同类型: ie.Button(Find.ById("startDownloadLinkId")).ClickNoWait(); 或者您可以尝试直接下载: ie.GoTo(fullFileName); 关键是你必须抓住你需要的控制类型.您可以查询ie.Elements直到找到它.或者,如果已知id,name或type,则使用Find.By *方法之一. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |