Я проверил различные способы решения этой проблемы и набросал некоторый код
class Program
{
static void Main(string[] args)
{
string command = string.Empty;
while (command != "exit")
{
Console.Write("# ");
command = Console.ReadLine();
switch (command)
{
case "go":
Thread t = new Thread(() =>
{
WebBrowser browser = new WebBrowser();
browser.DocumentCompleted += Browser_DocumentCompleted;
browser.Navigating += Browser_Navigating;
browser.Navigate("http://localhost"); // set url here
Application.Run();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
break;
}
}
Console.WriteLine("Bye! Press any key...");
Console.ReadKey();
}
private static void Browser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
Console.WriteLine("Navigating: {0}", e.Url);
}
private static void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (sender is WebBrowser browser)
{
Console.WriteLine("Loaded: {0}", e.Url);
HtmlDocument doc = browser.Document;
// do your job here with DOM of the HtmlDocument
Console.WriteLine(doc.Body.InnerHtml);
// additionally you may call browser.navigate here again and return; avoiding ExitThread
}
Application.ExitThread();
}
}
Эта программа загружает и показывает HTML веб-страницы с использованием WinForms WebBrowser
Control (Inte rnet Explorer). Я подписал комментарий, в котором предлагал добавить обработку HtmlDocument
, полученную из Интернета.
Чтобы сделать это более понятным, есть способ отправить форму, вызывая Click()
кнопки Отправить. Это похоже на то, что вы можете делать почти так же программно, как пользователь может делать это вручную в обычном браузере.