C# WebBrowser в цикле и Fiddlercore
Я использую Fiddlercore для захвата нескольких URL-адресов одновременно внутри цикла.
Пример:
private void button1_Click(object sender, EventArgs e)
{
// I have 2 url
string arr = new string[]{ url1, url2 };
foreach(var url in arr)
{
new Webbrowser().Navigate(url);
}
Fiddler.FiddlerApplication.AfterSessionComplete
+= new Fiddler.SessionStateHandler(FiddlerApplication_AfterSessionComplete);
}
// I will catch 2 oSession contain same string "a/b/c" in 2 URL from 2 Webbrowser in loop
int Count = 0;
void FiddlerApplication_AfterSessionComplete(Fiddler.Session oSession)
{
if(oSession.fullUrl.contain("a/b/c"))
{
Count+= 1;
richtextbox1.AppendText("oSession.fullUrl" + "\n");
}
if(Count == 2)
{
Count = 0;
StopFiddler();
}
}
void StopFiddler()
{
Fiddler.FiddlerApplication.AfterSessionComplete
-= new Fiddler.SessionStateHandler(FiddlerApplication_AfterSessionComplete);
}
Это работает, но у меня есть проблема. Fiddlercore останавливает сеанс захвата, но веб-браузер не останавливается, он все еще загружается.
Как остановить загрузку WebBrowser после того, как я получу то, что мне нужно.
1 ответ
Используйте WebBrowser.Stop(), чтобы остановить всю загрузку.
Отменяет любую ожидающую навигацию и останавливает любые динамические элементы страницы, такие как фоновые звуки и анимация.
Изменить: Кроме того, вам нужно сохранить ссылку на те элементы управления WebBrowser, которые вы создаете, так что вы можете вызвать Stop
метод для них. То, как вы используете их сейчас, довольно странно и может привести к проблемам в будущем (на самом деле это уже привело к проблемам).