我正在尝试使用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保存网页,结果与手动保存相同。
谢谢!
答案 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);
答案 2 :(得分:0)
不确定WatiN,但使用iMacros这很容易:Browser Automation - Saving Websites
iMacros提供免费/开源和商业flavors。免费的iMacros for Firefox包括好的command line support。