0

我正在尝试编写代码以将数据从公共数据源下载到我们的服务器。为此,我编写了一个代码,打开数据源网站的网页(名为 webBrowser1 的 WebBrowser 控件),然后在网页的文本框中输入文件号,然后单击确定以获取结果。代码对一个文件运行良好,但是当我尝试在循环中执行此操作时, InvokeMember("Click") 仅在循环完成时才有效(仅在循环结束时单击)。当 Well_File_No 更改时,如何更改此代码以迭代地单击网页上的按钮?我的代码附在下面。谢谢您的帮助。我正在使用 C# Windows 窗体编写代码。

 private void runToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //Code runs from Toolstrip on the Windows Form
        for (int i = 0; i < 10; i++)
        {
            // this function try to locate textbox and click button on webpage 
            test(i);
         }

    }



    void test(int i)
    {
       // File Number to be entered in textbox named "fileno"
        Well_File_No = Convert.ToString(17141 + i);
            webBrowser1.Document.GetElementById("fileno").SetAttribute("Value", Well_File_No);

        foreach (HtmlElement btn in webBrowser1.Document.GetElementsByTagName("input"))
        {
            var BTN = btn;
            if (BTN.GetAttribute("type").Equals("submit"))
            {
                webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
                BTN.InvokeMember("Click");
                break;
            }
        }
        while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();

        }
    }

      void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
          ... process data from the table and store....
     }
4

0 回答 0