加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#WatiN下载文件IE9

发布时间:2020-12-16 06:59:20 所属栏目:百科 来源:网络整理
导读:我试图在IE9中使用带有C#4.0的Watin v2.1下载文件,我没有运气.还有其他问题询问类似的问题,但没有其他答案在我的情况下正确下载文件,我已经厌倦了所有. Watin的2.1版本增加了一个新的静态方法ReturnDialogHandler.CreateInstance(),它应该为任何版本的IE获得
我试图在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 *方法之一.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读