7

任何人都可以提供使用 Watin 下载 PDF 文件的示例吗?我尝试了 SaveAsDialogHandler 但我无法弄清楚。也许可以使用 MemoryStream?

谢谢,

--jb

4

4 回答 4

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

    fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(30);
    fileDownloadHandler.WaitUntilDownloadCompleted(200);
}
于 2008-10-14T14:48:45.613 回答
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

于 2008-10-14T14:46:58.940 回答
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));
于 2008-11-14T22:34:27.703 回答
0

看看这个帖子:

如何使用 WatiN 检查 PDF 是否在浏览器中成功打开?

于 2009-09-23T15:59:47.927 回答