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
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>