VB.Net: Как заполнить форму на веб-сайте, затем нажать кнопку и загрузить файл с помощью веб-браузера?

Я использую WebBrowser-Control для заполнения веб-формы, а затем нажимаю кнопку, в настоящее время это приводит к стандартному диалоговому окну загрузки файла (вы получаете их, если загружаете файл с помощью Internet Explorer), но вместо этого я должен поймать это файл и сохранить его автоматически с заданным мной именем в определенную папку.

Я пытаюсь написать небольшое приложение в vb.net, которое загружает экспортный файл из моего блога wordpress, и я хочу сделать это полностью без взаимодействия с пользователем.

На данный момент все работает, кроме загрузки файла. Я пытался поймать его с помощью события System.Windows.Controls.WebBrowser.Navigating(ByVal Object, ByVal System.Windows.Navigation.NavigatingCancelEventArgs), но не вижу, откуда скачать файл :(

Я надеюсь, что вы, ребята, можете мне помочь.


person BasisBit    schedule 15.03.2010    source источник


Ответы (3)


Используйте WATIN. Очень, очень похоже на элемент управления браузера IE, НО у него есть всевозможные классные обработчики всплывающих диалогов, включая предупреждения безопасности и параметры загрузки/сохранения файлов.

person ajl    schedule 14.04.2010

Вы можете использовать Fiddler для захвата HTTP-запроса, используемого для получения файла, и просто записать ответ. Затем вы можете сохранить тело ответа в файл.

Fiddler имеет обширную поддержку автоматизации.

person Zian Choy    schedule 15.03.2010
comment
Я могу заставить элемент управления веб-браузером просто загружать страницу, а не запускать какие-либо сценарии и т. д., но я не нахожу ничего, связанного с исходным кодом веб-сайта, который я мог бы сохранить, и, если возможно, я не хочу использовать другой сторонний продукт - person BasisBit; 15.03.2010
comment
Fiddler — это инструмент разработки, вы не будете использовать его во время выполнения. Вы можете использовать это для захвата HTTP-разговора между браузером и веб-сервером, а затем эмулировать этот разговор с помощью WebClient для отправки HTTP-запросов. - person MarkJ; 15.03.2010
comment
Спасибо! это значительно приближает меня к моей цели, но у меня все еще есть проблема с формой входа в систему, если я использую веб-клиент вместо веб-браузера. - person BasisBit; 16.03.2010
comment
извините, но не работает :( Это должно было быть внутри элемента управления веб-браузером (я также мог бы использовать расширенные элементы управления веб-браузером, но все, что я пробовал, не обрабатывало такие загрузки - почему?) Но другой способ - добавить text/xml в качестве типа mime в Internet Explorer, чтобы он показывал его вместо загрузки - знаете ли вы, как изменить типы mime с помощью vb.net или С#? - person BasisBit; 17.03.2010

реализовать IServiceProvider на сайте веб-браузера и отвечайте на служебные запросы в IDownloadManager

person Sheng Jiang 蒋晟    schedule 15.03.2010
comment
Спасибо за эту помощь! Я попробовал этот проект ExtendedWebBrowser, но я действительно не знаю, что мне делать с IDownloadManager или где в коде ExtendedWebBrowser я должен добавить это :( - person BasisBit; 17.03.2010
comment
groups.google.com/group/ - person Sheng Jiang 蒋晟; 17.03.2010