2010-10-24 3 views
2

J'essaie de sauver le contenu complet de la page Web actuelle statique, en utilisant le code de Show IE "Save As" dialog using WatinEnregistrer page Web en cours dans Watin

Alors voilà:

IE ie = nouveau IE (» http://localhost "); // code plus

// Je pense out.html est le fichier de sortie FileDownloadHandler fileDownloadHandler = new FileDownloadHandler ("out.html");

// Je m'attends à ce que cette ligne fasse apparaître la boîte de dialogue Enregistrer sous, mais rien ne se passe ie.AddDialogHandler (fileDownloadHandler); // le programme est bloqué sur cette ligne, car il ne peut pas cliquer sur ie.Link ("startDownloadLinkId"). Cliquez sur();

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

J'ai essayé aussi le code ci-dessous, mais il ne sauve pas toute la page: fichier System.IO.StreamWriter = new System.IO.StreamWriter ("output.html"); file.Write (ie.Html);

Encore une fois, je dois enregistrer la page Web de Watin, et que le résultat soit le même que l'enregistrer manuellement.

Merci!

Répondre

0

Essayez d'analyser le code html avec le pack d'agilité html et l'enregistrer, il y a des capacités supplémentaires que vous pouvez utiliser ...

 using HtmlAgilityPack; 

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

Link to agility pack

+0

J'ai essayé HtmlAgilityPack, mais il ne fonctionne pas, car elle produit la même sortie que: file.write (ie.Html). J'ai besoin d'obtenir la même sortie que de voir le code source dans le navigateur lui-même. – xls

+1

Comme ie.Html ne renvoie que le fichier * download * html, aucune modification effectuée par javascript ne sera visible dans votre fichier html enregistré. –

0

ne suis pas sûr Watin, mais avec iMacros c'est iMacros est disponible en libre/open-source et commercial flavors. Les iMacros gratuits pour Firefox incluent command line support.

+0

Désolé, je suis intéressé par une approche Watin, car j'ai déjà écrit du code en l'utilisant. – xls

1

Voici comment je le fais:

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

Suppose MRAA est un élément Watin IE, bien sûr.

Si vous avez toujours des difficultés à trouver comment faire quelque chose avec WatiN, je trouve souvent utile de google comment le faire avec un "objet Internet Explorer COM". WatiN enveloppe l'objet, mais il est exposé et accessible!

À la votre!

Questions connexes