2008-10-13 4 views
7

Czy ktoś może dostarczyć i przykład pobierając plik PDF przy użyciu Watin? Próbowałem SaveAsDialogHandler, ale nie mogłem tego rozgryźć. Być może można użyć MemoryStream?Watin i PDF na

Dzięki

--jb

Odpowiedz

2

Kod ten będzie rade. Klasa UsedialogOnce znajduje się w kodzie WatiN.UnitTests i będzie częścią wydania WatiN 1.3 (która prawdopodobnie zostanie wydana 14 lipca o godzinie 14).

FileDownloadHandler fileDownloadHandler = nowy FileDownloadHandler (file.FullName); stosując (New UseDialogOnce (ie.DialogWatcher, fileDownloadHandler)) { ie.Button ("exportPdfButtonId") ClickNoWait (.);

fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30); 
fileDownloadHandler.WaitUntilDownloadCompleted(200); 

}

HTH, Jeroen van Menen wiodący deweloper Watin

4
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(file.FullName); 
using (new UseDialogOnce(ie.DialogWatcher, fileDownloadHandler)) 
{ 
    ie.Button("exportPdfButtonId").ClickNoWait(); 

    fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30); 
    fileDownloadHandler.WaitUntilDownloadCompleted(200); 
} 
1

po prostu wpadł na ten sam problem, z wyjątkiem używam Foxit zamiast Acrobat. Powiedziałem, żeby Foxit nie uruchamiał się w przeglądarce, a ten kod zaczął działać dobrze. Oto pełna testów jednostkowych, które powinno wystarczyć:

 string file = Path.Combine(Directory.GetCurrentDirectory(), "test.pdf"); 

     using (IE ie = new IE()) 
     { 
      FileDownloadHandler handler = new FileDownloadHandler(file); 

      using (new UseDialogOnce(ie.DialogWatcher, handler)) 
      { 
       try 
       { 
        ie.GoToNoWait("http://www.tug.org/texshowcase/cheat.pdf"); 

        //WatiN seems to hang when IE loads a PDF, so let it timeout... 
        ie.WaitForComplete(5); 
       } 
       catch (Exception) 
       { 
        //Ok. 
       } 

       handler.WaitUntilFileDownloadDialogIsHandled(30); 
       handler.WaitUntilDownloadCompleted(30); 
      } 

     } 

     Assert.That(File.Exists(file));