Comment puis-je obtenir un HtmlElementCollection d'un WPF WebBrowser

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

Question

Mon ancienne application WinForm utilisait HtmlElementCollection pour traiter une page

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

Dans WPF WebBrowser, plusieurs choses sont différentes. Par exemple

this.webbrowser.Document n'a aucune méthode appelée GetElementsByTagName

Par conséquent, mon code ne parvient pas à obtenir un HtmlElementCollection

Réponse acceptée

Vous devez ajouter une référence à Microsoft.mshtml , puis vous devez mshtml.HTMLDocument document en mshtml.HTMLDocument . Cela fait, vous devriez pouvoir utiliser la méthode getElementsByTagName()

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

 }

getElementsByTagName() retourne mshtml.IHTMLElementCollection et chaque élément est d'un type mshtml.IHTMLElement

MODIFIER

Solution alternative, si vous devez utiliser WinForms WebBrowser vous pouvez l’utiliser à la place de celui de WPF. Ajouter une référence à WindowsFormsIntegration et System.Windows.Forms , créer un espace de noms en XAML et utiliser un contrôle de navigateur différent

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow