C# - автоматический вход на веб-страницу с помощью WebBrowser - отключен HTML-тег
После некоторого исследования проблемы WebCrowser DocumentCompleted я вставил попытку входа в обработчик событий DocumentCompleted.
Вот мой код:
public void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
wb.Navigate("fooPage");
var browser = (WebBrowser)sender;
HtmlElement email = CookieReader.GetElement("email", browser);
HtmlElement password = CookieReader.GetElement("pass", browser);
email.SetAttribute("email", "foo@something.com");
password.SetAttribute("pass", "foo");
HtmlElement loginElement = CookieReader.GetElement("fooLog", browser);
loginElement.InvokeMember("click"); //wb_DocumentCompleted Method Continues...
Мне не удалось войти (дважды проверил, что я получил кнопку входа правильно). Похоже, проблема в свойстве ReadyState объекта браузера. Он всегда загружается, а свойство IsBusy всегда имеет значение False. Кроме того, страница должна была завершить загрузку, поскольку произошло событие DocumentCompleted. Есть идеи, как это вообще возможно?
Более того, при отладке метод InvokeMember изменяет элемент html INPUT, и появляется отключенный тег (disabled=\"\" - HTML5 disabled="disabled", если я не ошибаюсь). Я не знаю, почему этот тег был добавлен (раньше его не было), и если он каким-либо образом связан с постоянной загрузкой ReadyState страницы... идеи и / или советы будут высоко оценены!
1 ответ
У меня такая же проблема. DocumentCompleted
событие запускается более одного раза за одну загрузку. Я думаю, что первое не настоящее. Я думаю, что вы должны создать BackgroundWorker
и начать, когда DocumentCompleted
событие пожары. Следует подождать несколько секунд, прежде чем делать работу. Это определенно сработает.
Вы должны начать BackgroundWorker
только однажды.