【问题标题】:downloading a file with Watin使用 Watin 下载文件
【发布时间】:2015-08-27 13:34:55
【问题描述】:

如何使用 watin 下载文件?我搜索了很多并尝试了,但我无法得到它。 我只想点击一个有下载的链接并保存它。我使用了我找到但没有成功的例子。问题是我使用“WaitUntilFileDownloadDialogIsHandled(15)”,但是 15 秒过去并抛出异常:WatiN.Core.Exceptions.WatiNException:15 秒后没有显示对话框。

这是代码:

FileDownloadHandler download = new FileDownloadHandler("C:/Development/Test/Downloads/" + "excel" + ".xls");
            using (new UseDialogOnce(browser.DialogWatcher, download))
            {
                browser.Button(Find.ById("id_of_the_button")).ClickNoWait();
                download.WaitUntilFileDownloadDialogIsHandled(15);
                download.WaitUntilDownloadCompleted(150);                
                browser.RemoveDialogHandler(download);
            }

请帮忙!

【问题讨论】:

  • 我忘了说,但我使用 firefox 来处理(没关系,我也尝试过 IE

标签: firefox download watin


【解决方案1】:

我确实发现了一个困扰我的问题

FileDownloadHandler handler = new FileDownloadHandler(@"c:\temp\file.csv");
browser.DialogWatcher.CloseUnhandledDialogs = false;
using (new UseDialogOnce(browser.DialogWatcher, handler))
{
    browser.Link(Find.ByText("July2011")).Click();
    handler.WaitUntilFileDownloadDialogIsHandled(15);
    handler.WaitUntilDownloadCompleted(240);
}

请注意包含“CloseUnhandledDialogs = false”行。我的保存对话框弹出立即消失了,我花了很长时间才意识到发生了什么。

【讨论】:

  • 我爱死你了!我一直在为消失的保存对话框苦苦挣扎一段时间,完全不知所措!我认为这是 IE 的问题,与代码无关。
【解决方案2】:

我使用了以下代码 sn-p,它工作得非常好

FileDownloadHandler download = new FileDownloadHandler("C:\\Development\\Test\\Downloads\\" + "excel" + ".xls");
browser.AddDialogHandler(download);
browser.Button(Find.ById("id_of_the_button")).ClickNoWait();
download.WaitUntilFileDownloadDialogIsHandled(15);
download.WaitUntilDownloadCompleted(150);                
browser.RemoveDialogHandler(download);

我使用的代码 sn-p 的唯一区别是我使用了带有转义字符的反斜杠,并且我在没有 using 块的情况下添加和删除了 DialogHandler。

~阿什纳门

【讨论】:

    【解决方案3】:

    使用 WATIN 下载文档

     public FileDownloadHandler fileDownloadHandler;
    
     /*CLICK ON THE FILE LINK TO DOWNLOAD..IT WILL PROMPT FOR FILE DOWNLOAD DIALOG..TO HANDLE THAT DIALOG USE THE BELOW CODE*/
    
      fileDownloadHandler = new FileDownloadHandler(//THE PATH IN WHICH YOU DOWNLOAD DOCUMENTS//);
        try
        {
            using (new UseDialogOnce(ie.DialogWatcher, fileDownloadHandler))
            {                                               
              download();
            }            
        }
        catch (WatiN.Core.Exceptions.WatiNException ex)
        {
          download();
        }
        public void download()
        {
             try
            {
                fileDownloadHandler.WaitUntilDownloadCompleted(8);
            }
            catch (WatiN.Core.Exceptions.WatiNException ex)
            {
                download();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多