InvokeMember("Click") динамически в C#
Я пытаюсь написать код для загрузки данных из общедоступного источника данных на наш сервер. Для этого я написал код, который открывает веб-страницу веб-сайта источника данных (элемент управления WebBrowser с именем webBrowser1), затем введите номер файла в текстовое поле на веб-странице и нажмите кнопку ОК, чтобы получить результат. Код работал нормально для одного файла, но затем, когда я попытался сделать это в цикле, InvokeMember("Click") работает только тогда, когда цикл завершен (только щелчки в конце цикла). Как я могу изменить этот код, чтобы итеративно нажимать кнопку на веб-странице при изменении Well_File_No? Мой код прилагается ниже. Спасибо за помощь. Я пишу код с помощью C# Windows Form.
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....
}