在Watin中保存当前的网页

时间:2010-10-24 13:35:06

标签: save watin

我正在尝试使用Show IE "Save As" dialog using Watin

中的代码保存当前静态网页的完整内容

所以这是:

IE ie = new IE(“http://localhost”); //更多代码

//我希望out.html是输出文件             FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(“out.html”);

//我希望这一行弹出“保存为”对话框,但没有任何反应             ie.AddDialogHandler(fileDownloadHandler);

//程序在此行被阻止,因为它无法在任何地方点击             ie.Link( “startDownloadLinkId”)点击();

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

我也试过下面的代码,但它没有保存所有页面: System.IO.StreamWriter file = new System.IO.StreamWriter(“output.html”); file.Write(ie.Html);

同样,我需要从Watin保存网页,结果与手动保存相同。

谢谢!

3 个答案:

答案 0 :(得分:1)

我是这样做的:

File.WriteAllText("myfile.html", 
(myIE.InternetExplorer as SHDocVw.InternetExplorer).Document.documentElement.outerHtml);

当然,假设myIE是一个WatiN IE元素。

如果您一直难以找到如何使用WatiN做某事,我常常发现谷歌如何使用“Internet Explorer COM对象”进行操作会很有帮助。 WatiN包裹对象,但它被暴露并且能够被访问!

干杯!

答案 1 :(得分:0)

尝试使用html敏捷包解析html并保存,还有其他功能可以使用...

        using HtmlAgilityPack;

        var htmldoc = new HtmlDocument();
        htmldoc.LoadHtml(ie.Html);
        htmldoc.Save(stream);

Link to agility pack

答案 2 :(得分:0)

不确定WatiN,但使用iMacros这很容易:Browser Automation - Saving Websites

iMacros提供免费/开源和商业flavors。免费的iMacros for Firefox包括好的command line support