从 WebBrowser 控件调用按钮单击后检索 Html table 数据
Retrieve Html table data after invoking button click from WebBrowser control
尝试执行以下代码时出现空引用错误
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("textbox1").InnerText = "sometext";
webBrowser1.Document.GetElementById("textbox2").InnerText = "sometext";
webBrowser1.Document.GetElementById("Button1").InvokeMember("click");
object tb = webBrowser1.Document.GetElementById("Table1").All;
}
没有第 4 行我的代码工作正常。但是添加了第 4 行我得到了错误。
其实我想保存点击button1后生成的table。
上一页上没有 table1,即在单击按钮之前。
您的 WebBrowser 的文档 属性 为空,因为浏览器尚未加载该页面。您需要处理 WebBrowser 的 DocumentCompleted 事件并访问其中的 HTML 代码。
private void webbrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// access HTML here
}
使用如下内容。我认为它会起作用。
HtmlElement hleGetData = (HtmlElement)hdoc.GetElementById("getButton");
hleGetData.InvokeMember("click");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
};
System.Threading.Thread.Sleep(1000);
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
尝试执行以下代码时出现空引用错误
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("textbox1").InnerText = "sometext";
webBrowser1.Document.GetElementById("textbox2").InnerText = "sometext";
webBrowser1.Document.GetElementById("Button1").InvokeMember("click");
object tb = webBrowser1.Document.GetElementById("Table1").All;
}
没有第 4 行我的代码工作正常。但是添加了第 4 行我得到了错误。
其实我想保存点击button1后生成的table。 上一页上没有 table1,即在单击按钮之前。
您的 WebBrowser 的文档 属性 为空,因为浏览器尚未加载该页面。您需要处理 WebBrowser 的 DocumentCompleted 事件并访问其中的 HTML 代码。
private void webbrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// access HTML here
}
使用如下内容。我认为它会起作用。
HtmlElement hleGetData = (HtmlElement)hdoc.GetElementById("getButton");
hleGetData.InvokeMember("click");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
};
System.Threading.Thread.Sleep(1000);
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();
System.Windows.Forms.Application.DoEvents();