我正在尝试编写代码以将数据从公共数据源下载到我们的服务器。为此,我编写了一个代码,打开数据源网站的网页(名为 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....
}