首页 文章

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

提问于
浏览
0

我正在编写一个 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 回答

  • 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以查看它实际上包含您认为应该包含的内容可能也值得您花些时间 .

  • 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! :)

相关问题