Дождитесь загрузки веб-страницы, пока не будет найден элемент - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в c # и его понятиях.Я пытаюсь сделать некоторую автоматизацию, используя winforms webbrowser control.

Я ищу метод, который loads a web page until a web item is found.Чтобы дождаться загрузки веб-страницы, я использую строку «Wait (30)», «Wait (30)», это очевидное ожидание, и это не оптимально.

Мне просто нужно synchronous download: Найтивеб-элемент, если веб-элемент отсутствует на странице, затем подождите 1 секунду, если веб-элемент найден, и завершите загрузку веб-страницы.

Вот мой код:

private void Wait(int number)
{
    DateTime time = DateTime.Now;
    do
    {
        Application.DoEvents();
    }
    while (time.AddSeconds(number) > DateTime.Now);
}

private void CheckFindElement1()
{
    try
    {
        Wait(30);
        var mlm = web_Browser.Document.GetElementById("id1");
    }
    catch (Exception)
    {
        Wait(1);
        CheckFindElement1();
    }
}

1 Ответ

0 голосов
/ 13 мая 2018

Ваше решение очень непродуктивно. Вы должны использовать событие WebBrowser.DocumentCompleted, или вы можете использовать WebBrowser.ReadyState Property.

private void CheckFindElement1()
{
   //This will go on untill the full page is loaded
    while (WebBrowser1.ReadyState.ToString() != "Complete") {
        Application.DoEvents();         
    }

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