Как проверить, отображается ли страница, размещенная в элементе управления веб-браузера? - PullRequest
1 голос
/ 06 сентября 2011

Hy People !.Я здесь снова прошу вашей помощи.У меня есть контроль веб-браузера в приложении Wpf.В событие «Загрузка основных окон» я установил источник элемента управления:

private void Window_Loaded(object sender, RoutedEventArgs e)
    {
             webBrowser1.Source = new Uri(ConnectionString);
             webBrowser1.Navigate(ConnectionString);
    }

Я перенаправлен на следующий URL: https://login.live.com/login.srf?wa=wsignin1.0&wtrealm=urn%3acrm%3adynamics.com&wctx=rm%3d1%26id%3de513a320-df72-4de8-bce8-b1f918dc4eff%26ru%3dhttps%253a%252f%252fwebfortis38.crm.dynamics.com%252fdefault.aspx&wct=2011-09-06T14%3a49%3a38Z

На этом этапе я должен войти в систему с моимИдентификатор Windows LiveДля этого я ищу элементы управления вводом, чтобы заполнить их своим именем пользователя и моим Pass, а затем кнопку submit, чтобы вызвать событие Click ():

            HTMLDocument mdoc = (HTMLDocument)webBrowser1.Document;
            IHTMLElement usern = mdoc.getElementById("i0116"); 
            IHTMLElement dom = mdoc.getElementById("i0118");
            IHTMLElement btl = mdoc.getElementById("idSIButton9");

            if (usern != null && dom != null && btl != null)
            {
                // pass authentication
                usern.setAttribute("value", UserName);
                dom.setAttribute("value", password);

                btl.click();
                IsRendered=true;
            }

ЗДЕСЬ ПРОБЛЕМА!.Если страница еще не обработана, процедура getElementById возвращает Null !!.

Есть ли способ узнать, когда страница полностью отображается?Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 19 сентября 2012
  1. Создать новую тему из DocumentCompleted,
  2. от точки входа нового потока,
  3. спит в течение 500 мс (или сколько долго можно безопасно для полной инициализации JavaScript)
  4. вызывать в собственный поток веб-браузера,
  5. теперь работаем с вычисляемым документом
0 голосов
/ 16 сентября 2011

Hy, может решить проблему. Я создал новую тему. В этот новый поток я вставил свой код в цикл DO-WHILE и с помощью thread.abort () в цикл IF. Спасибо за помощь

0 голосов
/ 06 сентября 2011

Вы можете использовать Navigated событие webBrowser1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...