Сохранить текущую веб-страницу в Watin - PullRequest
2 голосов
/ 24 октября 2010

Я пытаюсь сохранить полное содержимое текущей статической веб-страницы, используя код из Показать IE «Сохранить как» диалоговое окно с помощью Watin

Итак, вот оно:

IE т.е. = новый IE ("http://localhost"); // больше кода

// Я ожидаю, что out.html является выходным файлом FileDownloadHandler fileDownloadHandler = new FileDownloadHandler (" out.html ");

// Я ожидаю, что в этой строке появится диалоговое окно сохранения как, но ничего не происходит, т.е. .AddDialogHandler (fileDownloadHandler);

// программа заблокирована в этой строке, так какне могу нигде щелкнуть ie.Link ("startDownloadLinkId"). Click ();

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

Я также попробовал приведенный ниже код, но он не сохраняет всю страницу: файл System.IO.StreamWriter= new System.IO.StreamWriter ("output.html"); file.Write (ie.Html);

Опять же, мне нужно сохранить веб-страницу из Watin, и результат должен быть таким же, как сохранениеэто вручную.

Спасибо!

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Вот как я это делаю:

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

Предполагается, что myIE - это элемент IE WatiN, конечно.

Если у вас когда-либо возникают трудности с поиском способов сделать что-то с WatiNЯ часто нахожу полезным для Google, как это сделать с «Internet Explorer COM-объектом» .WatiN оборачивает объект, но он открыт и может быть доступен!

Приветствия!

0 голосов
/ 25 октября 2010

Не уверен насчет WatiN, но с iMacros это легко: Автоматизация браузера - сохранение сайтов

iMacros поставляется бесплатно / с открытым исходным кодом и коммерческими разновидностями . Бесплатный iMacros для Firefox включает в себя хорошую поддержку командной строки .

0 голосов
/ 25 октября 2010

Попробуйте разобрать html с помощью html пакета agility и сохранить его, есть дополнительные возможности, которые вы можете использовать ...

        using HtmlAgilityPack;

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

Ссылка на пакет agility

...