问题
My old WinForm application used HtmlElementCollection to process a page
HtmlElementCollection hec = this.webbrowser.Document.GetElementsByTagName("input");
In WPF WebBrowser, there are several things that are different. For example
this.webbrowser.Document does not have any method called GetElementsByTagName
Therefore my code is unable to get an HtmlElementCollection
回答1:
You need to add reference to Microsoft.mshtml
and then you need to cast document as mshtml.HTMLDocument
. After you do that you should be able to use getElementsByTagName()
method
var document = webBrowser.Document as mshtml.HTMLDocument;
var inputs = document.getElementsByTagName("input");
foreach (mshtml.IHTMLElement element in inputs)
{
}
getElementsByTagName()
returns mshtml.IHTMLElementCollection
and each item is of a mshtml.IHTMLElement
type
EDIT
Alternative solution, if you need to use WinForms WebBrowser
you can use that instead of the WPF one. Add reference to WindowsFormsIntegration
and System.Windows.Forms
, create namespace in XAML and use different browser control
<Window ...
xmlns:winforms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
<WindowsFormsHost>
<winforms:WebBrowser x:Name="webBrowser"/>
</WindowsFormsHost>
</Window>
来源:https://stackoverflow.com/questions/29972874/how-can-i-get-an-htmlelementcollection-from-a-wpf-webbrowser