任何人都可以提供使用Watin下载PDF文件的示例吗?我尝试了SaveAsDialogHandler,但我无法理解。也许可以使用MemoryStream?
谢谢,
- JB
答案 0 :(得分:4)
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(file.FullName);
using (new UseDialogOnce(ie.DialogWatcher, fileDownloadHandler))
{
ie.Button("exportPdfButtonId").ClickNoWait();
fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
答案 1 :(得分:2)
这段代码可以解决问题。 UsedialogOnce类可以在WatiN.UnitTests代码中找到,它将成为WatiN 1.3版本的一部分(可能会在10月14日发布)。
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(file.FullName); 使用(new UseDialogOnce(ie.DialogWatcher,fileDownloadHandler)) { ie.Button( “exportPdfButtonId”)ClickNoWait();
fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
HTH, Jeroen van Menen 首席开发人员WatiN
答案 2 :(得分:1)
我遇到了同样的问题,除了我使用Foxit而不是Acrobat。我告诉Foxit不要在浏览器中运行,然后这段代码就开始工作了。这是一个完整的单元测试,可以解决这个问题:
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));
答案 3 :(得分:0)