none
Obtener valor el atributo onclick de un boton en el webBrowser con c# RRS feed

  • 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 

     


    miércoles, 6 de diciembre de 2017 17:35

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).
    miércoles, 6 de diciembre de 2017 19:10

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).
    miércoles, 6 de diciembre de 2017 19:10
  • 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 

    jueves, 14 de diciembre de 2017 4:36