通过网络浏览器控件在 c# winform 中查找 Html 控件
Finding an Html Control in c# winform by a webbrowser control
我正在编写一个 Winform
应用程序,它将 Web 浏览器控件导航到特定的 URL 作为:
webBrowser1.Navigate("web.facebook.com");
现在我想获取此页面的所有 HTML
元素并检索这些控件的值,在谷歌搜索和所有我设法编写的代码片段之后,它没有显示错误但抛出例外说:
Object Reference not set to an instance of object.
mshtml.IHTMLInputElement email = (mshtml.IHTMLInputElement)webBrowser1.Document.GetElementById("email").DomElement;
MessageBox.Show(email.value);
此代码片段放置在网络浏览器控件的 Navigated
事件中。那我该怎么做呢?任何想法和建议表示赞赏。谢谢!
在第一个赋值处设置断点并找出返回空值的位:
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 以查看它实际上包含您认为应该包含的内容可能也值得。
非常感谢大家,我找到了出路,我是这样做的!
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! :)
我正在编写一个 Winform
应用程序,它将 Web 浏览器控件导航到特定的 URL 作为:
webBrowser1.Navigate("web.facebook.com");
现在我想获取此页面的所有 HTML
元素并检索这些控件的值,在谷歌搜索和所有我设法编写的代码片段之后,它没有显示错误但抛出例外说:
Object Reference not set to an instance of object.
mshtml.IHTMLInputElement email = (mshtml.IHTMLInputElement)webBrowser1.Document.GetElementById("email").DomElement;
MessageBox.Show(email.value);
此代码片段放置在网络浏览器控件的 Navigated
事件中。那我该怎么做呢?任何想法和建议表示赞赏。谢谢!
在第一个赋值处设置断点并找出返回空值的位:
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 以查看它实际上包含您认为应该包含的内容可能也值得。
非常感谢大家,我找到了出路,我是这样做的!
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! :)