从 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();