Principales respuestas
Obtener valor el atributo onclick de un boton en el webBrowser con c#

Pregunta
-
Saludos
estoy intentando obtener el valor de un atributo onclick de un boton ya que ese atributo es el que necesito para generar una descarga de un archivo (cabe resaltar que ese atributo cambia cada vez que se actualiza la pagina) por eso necesito recibirlo para luego llamar la url completa y descargar el archivo. estoy haciendo esto
HtmlElementCollection exportar = webBrowser1.Document.GetElementsByTagName("button"); int p = 0; foreach (HtmlElement boton in exportar) { if (p == 2) { string evento = boton.GetAttribute("onclick"); MessageBox.Show(evento); } p++; }
le pongo p == 2 porque hay otros 2 botones, al hacer esto me devuelve un mensaje que dice "System._ComObject"
este es el codigo de la pagina.
<button type="button" onclick="exportXLS('zm1kjwu5ee');" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button" aria-disabled="false"><span class="ui-button-icon-primary ui-icon ui-icon-calculator"></span><span class="ui-button-text">Exportar</span></button>
este es el trozo que estoy intentando sacar "zm1kjwu5ee" para despues hacer la descarga del archivo asi.
DownloadFileThread desc = new DownloadFileThread(); var url = desc.DownloadFile("http://190.255.47.33/sgp/export/index.php?id=zm1kjwu5ee", "C:/Users/Master/Desktop/nuevo.xls"); MessageBox.Show("Test "+url);
de antemano agradezco mucho por su ayuda y espero encontrar la solución pronto
- Editado Peter Barranco miércoles, 6 de diciembre de 2017 17:37
Respuestas
-
Veo que lo estás intentando hacer a través del DOM. Se me ocurre una alternativa: descárgate a un string el html de la página que contiene el botón, y separa el fragmento de texto que te interesa usando una expresión regular (o usando funciones de manipulación de cadenas tales como IndexOf y SubString).
- Propuesto como respuesta Pablo RubioModerator miércoles, 6 de diciembre de 2017 19:24
- Marcado como respuesta Juan MondragónModerator lunes, 11 de diciembre de 2017 15:48
Todas las respuestas
-
Veo que lo estás intentando hacer a través del DOM. Se me ocurre una alternativa: descárgate a un string el html de la página que contiene el botón, y separa el fragmento de texto que te interesa usando una expresión regular (o usando funciones de manipulación de cadenas tales como IndexOf y SubString).
- Propuesto como respuesta Pablo RubioModerator miércoles, 6 de diciembre de 2017 19:24
- Marcado como respuesta Juan MondragónModerator lunes, 11 de diciembre de 2017 15:48
-
Saludos pablo muchas gracias por responder es mi primera pregunta en el foro y te agradezco mucho de hecho ya lo habia resuelto lo que hice fue usar el OuterHtml para obtener el string del html del boton
// declaro un arreglo vacio string[] texto = []; // recibo la cadena string cadena = boton.OuterHtml; //lleno el arreglo con las partes de la cadena lo estoy separando por ' por eso uso el back slash texto = cadena.Split('\''); // obtengo el codigo que necesito string parametro = texto[1];
igual agradezco much su colaboracion espero les sirva como referencia para otras personas que tengan la misma duda