Watin和PDF的

时间:2008-10-13 16:58:53

标签: pdf watin

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

谢谢,

- JB

4 个答案:

答案 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)