.NET Core 3.1 WebBrowserControl 导航后读取 html

.NET Core 3.1 WebBrowserControl read html after navigation

在 WPF Web 浏览器控件完成导航到页面后,我似乎无法读取 HTML。

我必须使用 WebBrowser 而不是 HttpClient 的原因是因为所需的网页需要先登录。

XAML:

<WebBrowser x:Name="wbBrowse" Source="anywebpage" LoadCompleted="wbBrowse_LoadCompleted">
</WebBrowser>

代码:

  private void wbBrowse_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
  {
      var doc = wbBrowse.Document;
  }

我试过将 Document 转换为 HtmlDocument,但它崩溃了。这是一个“{System.__ComObject}”对象,对我来说毫无意义。

谢谢

在 Visual Studio 中的项目->添加引用->COM 下添加对 Microsoft HTML Object Library 的引用,并将 Document 的值转换为 MSHTML.IHTMLDocument2:

private void wbBrowse_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    MSHTML.IHTMLDocument2 doc = wbBrowse.Document as MSHTML.IHTMLDocument2;
    ...
}

这在 .NET Core 3.1 中有效。