2011-10-03 8 views
11

Estoy usando WebKitDotNet para simular y automatizar un navegador web. Esto es realmente ingenioso y funciona en la mayoría de los aspectos. Sin embargo, cuando trato de aplicar este código, WebKit no desencadena una descarga:Posible descargar un archivo a través del buscador WebKit en C# usando 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"); 
} 

Ni el "error" ni el eventos "" DownloadBegin fuego. Me gustaría esperar que al menos uno de ellos lo haga, ¿hay algún lugar que me falta?

EDIT: Sé que esta es una vieja pregunta, pero aquí está la actualización. Cuando escribí esta pregunta, intentaba automatizar un proceso que requería que un ser humano, una vez por día, iniciara sesión en un sitio web, proporcione credenciales y haga clic en un enlace de descarga. Esperábamos poder hacer esto programáticamente para aliviar la monotonía de la persona pobre encargada de hacer este trabajo.

Desafortunadamente, WebKitDotNet no tuvo éxito en esta tarea. Aunque, en un navegador basado en webkit, puede hacer clic en el enlace y activar una descarga, en el WebKitDotNet incorporado haciendo clic en el enlace no hizo nada. Supongo que algo dentro de WebKitDotNet perdió el evento. Si alguien quiere probar esto, puede usar el enlace de descarga de Sourceforge para probar.

Uno de los miembros de mi equipo finalmente resolvió este problema utilizando una herramienta de automatización de Internet Explorer llamada "IMacros". Seleccionamos este producto porque 1) Podemos garantizar que IE esté instalado en cada computadora que ejecutaría el programa, y ​​2) IMacros podría recibir correctamente el evento desde el sitio web y activar la descarga del archivo.

+0

¿Qué sucede si utiliza una URL de descarga directa: [enlace] 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 Supongo que el navegador webkit no está manejando el tiempo de espera de 5 segundos causado por un javascript en la página correctamente. –

+0

Revisé la página de descarga y no usa un javascript para actualizarse a la URL de descarga real. Utiliza la etiqueta meta http-equiv = "refresh". Esto hace que el navegador se actualice a la URL de descarga real, lo que obviamente no está sucediendo. No pude encontrar ninguna limitación mencionando esto en el sitio web del proyecto. –

+0

En realidad, la razón por la que no uso una descarga directa es que algunos sitios (no forzosamente, sino otros sitios) requieren interacciones complejas de cookies y sesiones para permitir la descarga. Así que escribí la prueba usando un sitio de código abierto de dominio público para demostrar el problema, lo siento si eso no estaba claro. –

Respuesta

1

En el gestor de incidencias hay una fecha del 24 de marzo de 2011, en la que se afirma que descarga no funciona todavía:

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

Puesto que hay algunos problemas en el rastreador, tendría probablemente se marcó como resuelto si la función se agregó mientras tanto.

+0

Supongo que aceptaré esta respuesta: me gustaría poder decir que recogieron el proyecto y lo arreglaron, pero bueno :) –

Cuestiones relacionadas