【问题标题】:webbrowser DocumentText does not update on form submitwebbrowser DocumentText 不会在表单提交时更新
【发布时间】:2016-03-14 17:33:48
【问题描述】:

我有一个网站,它以用户名作为输入并显示一些数据。 任务是创建一个可以执行以下步骤的应用程序: 1. 打开网站。 2. 输入使用详情并提交表格。 3. 检索数据。 我正在使用 webBrowser 控件与 web 元素进行交互。代码如下:

    private void button1_Click(object sender, EventArgs e)
    {

        webBrowser1.AllowNavigation = true;
        // Supress the java script errors on the screen 
        webBrowser1.ScriptErrorsSuppressed = true;
        bool complete = false;
        this.webBrowser1.DocumentCompleted += delegate
        {
            if (complete)
                return;
            complete = true;
            this.webBrowser1.Document.Window.AttachEventHandler("onload", delegate
            {
                System.Threading.SynchronizationContext.Current.Post(delegate
                {
                    var elemList = GetElementsByIdNameContains(webBrowser1, "input", "txtEmpNo");
                    var inputBox = elemList[0];
                    var emp_id = "621999";
                    var errorMsg = "Searched Employee " + emp_id + " doesnt not exist.";
                    inputBox.InnerText = emp_id;
                    var elemList1 = GetElementsByIdNameContains(webBrowser1, "input", "btnSubmit");
                    var submitButton = elemList1[0];
                    submitButton.InvokeMember("Click");
        var doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(webBrowser1.DocumentText);
        StringBuilder rowData = new StringBuilder();

        foreach (HtmlAgilityPack.HtmlNode table in doc.DocumentNode.SelectNodes("//table[contains(@id,'_grdvwAttendance')]"))
            foreach (HtmlAgilityPack.HtmlNode row in table.SelectNodes("tr"))
            {
                // TODO: Need to format the output.
                rowData.Clear();
                foreach (HtmlAgilityPack.HtmlNode cell in row.SelectNodes("th|td"))
                {
                    rowData.Append(cell.InnerText + "");
                }
                listBox1.Items.Add(rowData);
            }

                 }, null);
            });
        };
        webBrowser1.Navigate("SomeURl");

    }

调用“单击”后,webbrowser1.DocumentText 没有得到更新,并且代码在 foreach 行中抛出异常(doc.DocumentNode.SelectNodes 中的 HtmlAgilityPack.HtmlNode 表(“//table[contains(@id,'_grdvwAttendance' )]")) 因为它无法在页面上找到该元素。 有人可以帮忙吗?

【问题讨论】:

    标签: c# webbrowser-control html-agility-pack


    【解决方案1】:

    问题可能是您试图在内容完成之前获取内容(即在 post 方法返回结果之前)提交请求和响应。在调用提交“单击”选项后给予一段时间并尝试。否则,您可以检查文档完成状态并检查元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2012-08-18
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      相关资源
      最近更新 更多