2011-10-03 8 views
11

Sto usando WebKitDotNet per simulare e automatizzare un browser web. Questo è davvero elegante e funziona sotto molti aspetti. Tuttavia, quando provo ad applicare queste regole, WebKit non attiva un download:È possibile scaricare un file tramite browser WebKit in C# utilizzando 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"); 
} 

Né il "Error", né degli eventi "DownloadBegin" fuoco. Mi aspetterei che almeno uno di loro lo faccia. C'è un ambiente che mi manca?

EDIT: So che questa è una vecchia domanda, ma ecco l'aggiornamento. Quando ho scritto questa domanda, stavo cercando di automatizzare un processo che richiedeva a un essere umano - una volta al giorno - di accedere a un sito Web, fornire le credenziali e fare clic su un collegamento per il download. Speravamo di essere in grado di farlo programmaticamente per alleviare la monotonia per la persona povera incaricata di fare questo lavoro.

Sfortunatamente, WebKitDotNet non è riuscito in questa attività. Sebbene, in un browser basato su webkit, è possibile fare clic sul collegamento e attivare un download, nel WebKitDotNet incorporato facendo clic sul collegamento non ha fatto nulla. La mia ipotesi è che qualcosa all'interno di WebKitDotNet abbia perso l'evento. Se qualcuno vuole testare questo, è possibile utilizzare il link di download Sourceforge per testare.

Uno dei ragazzi del mio team ha finalmente risolto questo problema utilizzando uno strumento di automazione di Internet Explorer chiamato "IMacros". Abbiamo selezionato questo prodotto perché 1) Potremmo garantire che IE sia installato su tutti i computer che eseguono il programma e 2) IMacros potrebbe ricevere correttamente l'evento dal sito Web e attivare il download del file.

+0

Cosa succede se si utilizza un URL di download diretto: [collegamento] http://downloads.sourceforge.net/project/webkitdotnet/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo .zip? r = & ts = 1318524392 & use_mirror = sunet Immagino che il browser webkit non gestisca correttamente il timeout di 5 secondi causato da un javascript nella pagina. –

+0

Ho controllato la pagina di download e non utilizza un javascript per aggiornarsi all'url reale del download. Usa il tag meta http-equiv = "refresh". Ciò fa sì che il browser si aggiorni all'URL di download effettivo che ovviamente non sta accadendo. Non sono riuscito a trovare alcuna limitazione menzionandola sul sito web del progetto. –

+0

In realtà il motivo per cui non utilizzo un download diretto è che alcuni siti (non sourceforge, ma altri siti) richiedono interazioni complesse di cookie e sessioni per consentire il download. Così ho scritto il test utilizzando un sito open source di dominio pubblico per dimostrare il problema, mi dispiace se non fosse chiaro. –

risposta

1

Sul Issue Tracker c'è una data posta dal 24 marzo 2011 in cui si afferma che download non funziona ancora:

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

Dato che ci sono alcuni problemi nel tracciatore, avrebbe probabilmente è stato contrassegnato come risolto se la funzione è stata aggiunta nel frattempo.

+0

Immagino che accetterò questa risposta - Vorrei poter dire che hanno raccolto il progetto e l'hanno risolto ma vabbè :) –

Problemi correlati