Я создал проект C # WinForms с веб-браузером и отдельными элементами управления, чтобы нажимать определенные кнопки в веб-браузере, пока что все работает нормально. Тем не менее, одна из этих кнопок должна нажиматься с регулярными интервалами (я выбрал 20 секунд для отладки). Я пытаюсь щелкнуть по нему с помощью System.Timers.Timer, который запускается при событии .Elapsed.
webBrowser2.Document.GetElementById("link_logout").InvokeMember("click");
Всякий раз, когда предполагается, что кнопка будет нажата (т.е. эта строка находится в ElapsedEventHandler), я получаю исключение System.InvalidCastException именно в этой строке. То же самое происходит, когда я пытаюсь нажать другие кнопки или заполнить текстовое поле.
Странно то, что нажатие кнопки или заполнение текстового поля прекрасно работает, когда я делаю это с событием Button_Click.
Проблема, очевидно, не в том, что элемента html нет, я получаю то же исключение в предложении if, в строке if (element! = Null).
Ниже приведен еще мой код:
System.Timers.Timer t = new System.Timers.Timer(20 * 1000);
SomeMethodAtTheStart()
{
t.Start();
t.AutoReset = true;
t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
webBrowser2.Document.GetElementById("link_logout").InvokeMember("click");
}
private void tsmiConnect_Click(object sender, EventArgs e)
{
webBrowser2.Document.GetElementById("link_logout").InvokeMember("click");
}
Буду очень признателен, если кто-нибудь сможет мне помочь.