¿Cómo puedo obtener una colección HtmlElement de un navegador web WPF?

c# c#-4.0 html-agility-pack htmlelements wpf

Pregunta

Mi antigua aplicación WinForm usó HtmlElementCollection para procesar una página

HtmlElementCollection hec = this.webbrowser.Document.GetElementsByTagName("input");

En WPF WebBrowser, hay varias cosas que son diferentes. Por ejemplo

this.webbrowser.Document no tiene ningún método llamado GetElementsByTagName

Por lo tanto mi código no puede obtener un HtmlElementCollection

Respuesta aceptada

mshtml.HTMLDocument agregar una referencia a Microsoft.mshtml y luego debe convertir el documento como mshtml.HTMLDocument . Después de hacer eso, debería poder usar el método getElementsByTagName()

 var document = webBrowser.Document as mshtml.HTMLDocument;
 var inputs = document.getElementsByTagName("input");
 foreach (mshtml.IHTMLElement element in inputs)
 {

 }

getElementsByTagName() devuelve mshtml.IHTMLElementCollection y cada elemento es de un tipo mshtml.IHTMLElement

EDITAR

Solución alternativa, si necesita usar WinForms WebBrowser , puede usar ese en lugar del WPF. Agregue una referencia a WindowsFormsIntegration y System.Windows.Forms , cree un espacio de nombres en XAML y use diferentes controles de navegador

<Window ...
    xmlns:winforms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
    <WindowsFormsHost>
        <winforms:WebBrowser x:Name="webBrowser"/>
    </WindowsFormsHost>
</Window>


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué