none
obtener datos desde web con web browser y agility pack RRS feed

  • Pregunta

  • Hola,

    Estoy utilizando el control web browser para cargar un página web. Estoy tratando de guardar el valor que hay en un control input cName

    dentro de esa web. 

    La estructura html es la siguiente:

    <tr><td><script type="text/javascript">document.write(Row2);</script></td><td id="time" class="mac">2021-02-22 10:44:06</td></tr>
    <tr><td><script type="text/javascript">document.write(Row3);</script></td><td id="serial" class="mac">ns/bbbbbb</td></tr>
    <tr><td><script type="text/javascript">document.write(Row4);</script></td><td class="mac">330619</td></tr>
    <tr><td><script type="text/javascript">document.write(Row5);</script></td><td><input id="cName" class="user" type="text"/></td></tr>

    En el navegador si que muestra el valor del nombre de ususario almacenado en la clase user.

    Estoy uitlizando Agility Pack y consigo obtener los datos del nodo pero el valor almacenado no

    var a = doc1.GetElementbyId("cName");
                var b = a.GetAttributes("class");
                foreach (var item in b)
                {
                    var x = item.Value; // aqui obtengo el nombre de la clase en lugar del valor almacenado en dicha clase.
                }

    Gracias y saludos.

    martes, 23 de febrero de 2021 20:16

Respuestas

  • Ya he encontrado la solución.

    Revisando el archivo de recursos de javascript he visto que almacena los datos mostrados. Entonces he creado una función javascript para ejecutar desde mi aplicación para acceder a esos datos:

    System.Windows.Forms.HtmlDocument doc = webBrowser1.Document;
                HtmlElement head = doc.GetElementsByTagName("head")[0];

                HtmlElement s = doc.CreateElement("script");
                s.SetAttribute("text", "function getDetails1() { return localStorage.getItem(\"row5\" + storageIndex.toString());}"); // storageIndex Lo recupera automáticamente los scripts de la página.
                head.AppendChild(s);
                var a = webBrowser1.Document.InvokeScript("getDetails1");

    Gracias y saludos.

    • Marcado como respuesta McTinez miércoles, 24 de febrero de 2021 13:22
    miércoles, 24 de febrero de 2021 13:21

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 23 de febrero de 2021 22:54
    Moderador
  • Ya he encontrado la solución.

    Revisando el archivo de recursos de javascript he visto que almacena los datos mostrados. Entonces he creado una función javascript para ejecutar desde mi aplicación para acceder a esos datos:

    System.Windows.Forms.HtmlDocument doc = webBrowser1.Document;
                HtmlElement head = doc.GetElementsByTagName("head")[0];

                HtmlElement s = doc.CreateElement("script");
                s.SetAttribute("text", "function getDetails1() { return localStorage.getItem(\"row5\" + storageIndex.toString());}"); // storageIndex Lo recupera automáticamente los scripts de la página.
                head.AppendChild(s);
                var a = webBrowser1.Document.InvokeScript("getDetails1");

    Gracias y saludos.

    • Marcado como respuesta McTinez miércoles, 24 de febrero de 2021 13:22
    miércoles, 24 de febrero de 2021 13:21