2008-10-13 4 views
7

Kann jemand bereitstellen und Beispiel für das Herunterladen einer PDF-Datei mit Wattin? Ich habe den SaveAsDialogHandler ausprobiert, aber ich konnte es nicht herausfinden. Vielleicht könnte ein MemoryStream verwendet werden?Watin und PDFs

Danke,

--jb

Antwort

2

Dieser Code wird den Trick. Die UsedialogOnce-Klasse befindet sich im WatiN.UnitTests-Code und wird Teil der WatiN 1.3-Version sein (die voraussichtlich am 14. Oktober veröffentlicht wird).

FileDownloadHandler fileDownloadHandler = neuer FileDownloadHandler (file.FullName); Verwendung (neuer UseDialogOnce (dh DialogWatcher, fileDownloadHandler)) { ie.Button ("exportPdfButtonId"). ClickNoWait();

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

}

HTH, Jeroen van Menen Blei Entwickler 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

ich nur in das gleiche Problem lief, außer ich Foxit statt Acrobat. Ich habe Foxit gesagt, dass er nicht im Browser laufen soll, dann hat dieser Code gut funktioniert. Hier ist eine komplette Einheit Test, der den Trick tun sollten:

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