如何從WPF WebBrowser獲取HtmlElementCollection

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

我的舊WinForm應用程序使用HtmlElementCollection來處理頁面

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

在WPF WebBrowser中,有幾個不同的東西。例如

this.webbrowser.Document沒有任何名為GetElementsByTagName的方法

因此我的代碼無法獲取HtmlElementCollection

一般承認的答案

您需要添加對Microsoft.mshtml引用,然後您需要將文檔轉換為mshtml.HTMLDocument 。執行此操作後,您應該能夠使用getElementsByTagName()方法

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

 }

getElementsByTagName()返回mshtml.IHTMLElementCollection ,每個項目都是mshtml.IHTMLElement類型

編輯

替代解決方案,如果您需要使用WinForms WebBrowser您可以使用它而不是WPF。添加對WindowsFormsIntegrationSystem.Windows.Forms引用,在XAML中創建命名空間並使用不同的瀏覽器控件

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



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因