2011-10-03 12 views
11

Używam WebKitDotNet do symulacji i automatyzacji przeglądarki internetowej. To naprawdę sprytne i działa pod wieloma względami. Jednak, gdy próbuję wdrożyć ten kod, WebKit nie wyzwalać pobierania:Można pobrać plik za pomocą przeglądarki WebKit w języku C# przy użyciu webkitdotnet?

WebKitBrowser _b = null; 

private void button1_Click(object sender, EventArgs e) 
{ 
    _b = new WebKitBrowser(); 
    _b.DownloadBegin += new FileDownloadBeginEventHandler(b_DownloadBegin); 
    _b.Error += new WebKitBrowserErrorEventHandler(_b_Error); 
    _b.AllowDownloads = true; 
    _b.Navigate("http://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download"); 
} 

void _b_Error(object sender, WebKitBrowserErrorEventArgs e) 
{ 
    MessageBox.Show("error!"); 
} 

void b_DownloadBegin(object sender, FileDownloadBeginEventArgs e) 
{ 
    MessageBox.Show("hi"); 
} 

Ani „Error”, ani ogień „DownloadBegin” wydarzenia. Spodziewałbym się, że przynajmniej jeden z nich to zrobi - czy jest miejsce, którego mi brakuje?

EDYCJA: Wiem, że to stare pytanie, ale oto aktualizacja. Kiedy pisałem to pytanie, próbowałem zautomatyzować proces, który wymagał od człowieka - raz dziennie - zalogowanie się na stronie internetowej, podanie referencji i kliknięcie linku do pobrania. Mieliśmy nadzieję, że będziemy w stanie to zrobić programowo, aby zmniejszyć monotonię dla biednej osoby, której powierzono zadanie wykonywania tej pracy.

Niestety, WebKitDotNet nie powiodło się w tym zadaniu. Chociaż w przeglądarce opartej na webkitach można kliknąć łącze i wywołać pobieranie, we wbudowanym WebKitDotNet kliknięcie linku nie zrobiło nic. Domyślam się, że coś w WebKitDotNet straciło wydarzenie. Jeśli ktoś chce to przetestować, możesz użyć linku pobierania Sourceforge do przetestowania.

Jeden z pracowników mojego zespołu ostatecznie rozwiązał ten problem, używając narzędzia do automatyzacji przeglądarki Internet Explorer o nazwie "IMacros". Wybraliśmy ten produkt, ponieważ 1) Możemy zagwarantować, że IE został zainstalowany na każdym komputerze, na którym uruchomiono program, oraz 2) IMacros mógł poprawnie odebrać zdarzenie z witryny i spowodować pobranie pliku.

+0

Co zrobić, jeśli używasz bezpośredniego adresu URL pobierania: [link] http://downloads.sourceforge.net/project/webkitdotnet/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo .zip? r = & ts = 1318524392 i use_mirror = sunet Domyślam się, że przeglądarka internetowa nie obsługuje 5-sekundowego limitu czasu spowodowanego przez javascript na stronie. –

+0

Sprawdziłem stronę pobierania i nie używa javascript do odświeżenia się do rzeczywistego adresu URL do pobrania. Używa znacznika meta http-equiv = "refresh". To powoduje, że przeglądarka odświeża się do rzeczywistego adresu URL do pobrania, co oczywiście nie ma miejsca. Nie mogłem znaleźć żadnych ograniczeń na ten temat na stronie internetowej projektu. –

+0

W rzeczywistości powodem, dla którego nie korzystam z bezpośredniego pobierania, jest to, że niektóre witryny (nie sourceforge, ale inne witryny) wymagają złożonych interakcji między plikami cookie i sesjami, aby umożliwić pobieranie. Więc napisałem test za pomocą ogólnodostępnej witryny open source, aby zademonstrować problem, przepraszam, jeśli to nie było jasne. –

Odpowiedz

1

Na śledzenia błędów jest data post z 24 marca 2011 roku, w którym stwierdzono, że pobieranie nie działa jeszcze:

https://github.com/webkitdotnet/webkitdotnet/issues/7

Ponieważ istnieje kilka problemów w trackerze, musiałby prawdopodobnie został oznaczony jako rozwiązany, jeśli funkcja została dodana w międzyczasie.

+0

Sądzę, że przyjmuję tę odpowiedź - chciałbym móc powiedzieć, że podjęli projekt i naprawili go, ale no cóż :) –

Powiązane problemy