我正在编写一个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
事件中。那我该怎么做呢?任何想法和建议都会得到赞赏。谢谢!
答案 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! :)