通过webbrowser控件在c#winform中查找Html控件

时间:2016-02-17 22:51:23

标签: c# winforms exception-handling webbrowser-control

我正在编写一个Winform应用程序,它将Web浏览器控件导航到特定的URL:

webBrowser1.Navigate("web.facebook.com");

现在我想得到这个页面的所有HTML元素并检索这些控件的值,在谷歌搜索之后以及我设法编写此代码片段的所有内容,该代码片段显示没有错误但是抛出异常说:

  

对象引用未设置为对象的实例。

mshtml.IHTMLInputElement email = (mshtml.IHTMLInputElement)webBrowser1.Document.GetElementById("email").DomElement;
MessageBox.Show(email.value);

此代码段放置在Web浏览器控件的Navigated事件中。那我该怎么做呢?任何想法和建议都会得到赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

在第一个赋值上放置一个断点,并确定哪个位返回一个空值:

  • webBrowser1.Document
  • webBrowser1.Document.GetElementById("email")
  • webBrowser1.Document.GetElementById("email").DomElement

所以做这样的事情:

var doc = webBrowser1.Document;
var elem = doc.GetElementById("email");
var email = elem.DomElement;

并逐步完成代码。

在调试器中浏览webBrowser1.Document以查看它实际上包含您认为应该包含的内容可能也是值得的。

答案 1 :(得分:0)

非常感谢你们,我想出了办法,这就是我的表现!

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    try
    {
        mshtml.IHTMLInputElement email = (mshtml.IHTMLInputElement)webFacebook.Document.GetElementById("email").DomElement;
        MessageBox.Show(email.value);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

特别感谢@Eser! :)