Приложение Winform -Взаимодействие с веб-страницей

Приложение Windows Form — управление входными элементами -вWinForm WebBrowser

Хотя я знаком с HttpWebResponse/HttpWebRequestдля входа на веб-сайт, я пробовал это сейчас с помощью библиотеки mshtml и обнаружил какое-то странное поведение, и я хотел бы посмотреть, сможет ли кто-нибудь еще помочь мне здесь...

У меня есть страница входа в HTML с бэкэндом java с полем Username, полем Passwordи полем Button.

Логика очень проста, у меня есть встроенное приложение winform со встроенным веб-браузером. В событии Document_Completedя использую следующий код, чтобы войти в свои настройки и нажать кнопку.

private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser.Url.ToString() == @"MyWebPage/signin")            
    {
        HTMLDocument hdc = new HTMLDocumentClass();
        hdc = (HTMLDocument)webBrowser.Document.DomDocument;

        IHTMLElement elb = hdc.getElementById("login_button");
        IHTMLInputElement elu = (IHTMLInputElement)hdc.getElementById("username");
        IHTMLInputElement elp = (IHTMLInputElement)hdc.getElementById("password");

        try
        {
            elu.value = "MyID";
            elp.value = "MyPwd";
            elb.click();
        }
        catch { }
    }
}

Помимо того, что этот код очень быстрый и без обработки ошибок, он должен сработать, и он частично срабатывает..

Есть два сценария:

  • Я запускаю инструмент, он загружает веб-страницу.

    • Инструмент корректно заполняет поля UserID и Password
    • Инструменту не удается нажать кнопку
  • . Я нажимаю кнопку вручную, я вошел в систему, я нажимаю выход, я снова на странице входа

    • Я сразу же снова вошел в систему, инструмент вводит информацию
    • Инструмент также сразу же нажимает кнопку.

Есть ли кто-нибудь, кто мог бы объяснить мне, почему это происходит и как я могу обойти это с текущей настройкой (, следовательно, не используяHttpWebRequest). Я не вижу разницы между загрузкой страницы при запуске или перенаправлением после выхода из системы, но, видимо, разница есть или я делаю что-то не так.

Любая обратная связь по этому вопросу очень ценится.

Спасибо, Кевин

РЕДАКТИРОВАТЬ:

Я добавил Buttonв свою форму Windows, которая основана на том же внутреннем коде, что и ниже, чтобы щелкнуть кнопку на веб-странице, это работает отлично.

Я активировал нажатие этой кнопки в событии webBrowser_Completed, но оно не работает. По какой-то причине все, что я добавляю к событию webBrowser_DocumentCompleted, не позволяет мне инициировать событие щелчка для кнопки в моем элементе управления WebBrowser. Как только все это событие завершится, если я попытаюсь запустить его, оно сработает, но я хотел бы автоматизировать это. Любой совет?

6
задан XikiryoX 1 December 2014 в 10:52
поделиться