2011-05-27 68 views
3

如何用watin下載文件?我搜查了很多,嘗試過,但我無法得到它。 我只想點擊一個有下載並保存的鏈接。我使用了我發現但沒有成功的例子。問題是我使用「WaitUntilFileDownloadDialogIsHandled(15)」,但15秒傳遞和拋出異常:WatiN.Core.Exceptions.WatiNException:15秒後未顯示對話框。用Watin下載文件

這是代碼:

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); 
      } 

請幫助!

+0

我忘了說下載文件,但使用即時通訊的Firefox來處理(沒關係,我也tryed IE – Javi 2011-05-27 11:47:51

回答

0

我用下面的代碼片段,工作精絕

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); 

中,我使用的是我使用的反斜槓與轉義字符,而我並移除DialogHandler中的代碼片段唯一的區別沒有使用塊。

〜阿希什Narmen

2

我也發現,困擾我

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 =假」 行的一個問題。我的保存對話框彈出窗口立即消失,它讓我永遠意識到發生了什麼。

+0

我嚇壞愛你!我一直在掙扎消失保存對話框有一段時間,並且完全不知所措!我認爲這是IE的問題,而與代碼無關。 – 2017-06-28 16:47:19

0

要使用華廷

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(); 
     } 
    }