Лучший способ проверить, готова ли страница браузера в VBA - PullRequest
0 голосов
/ 13 июля 2020

Я видел три разных способа проверить, готова ли страница, на которую я перехожу. Как показано в примере кода ниже.

Мне кажется, что метод 1 является лучшим, но я надеюсь, что эксперт скажет иначе или даже лучше ... предоставит правильный способ сделать это, если что-то есть разные.

Вот пример кода

Sub OpenBrowser()
    Dim vOBJBROWSER As Object
    Set vOBJBROWSER = CreateObject("InternetExplorer.Application")

    vOBJBROWSER.Navigate "http://stackoverflow.com"

    'Method 1
    Do While vOBJBROWSER.Busy Or vOBJBROWSER.ReadyState <> 4
        DoEvents
    Loop

    'Method 2
    Do While vOBJBROWSER.ReadyState < 4
        DoEvents
    Loop
    
    'Method 3
    Do
    Loop Until vOBJBROWSER.ReadyState = READYSTATE_COMPLETE

    vOBJBROWSER.Visible = True
End Sub

1 Ответ

2 голосов
/ 13 июля 2020

Браузер IE заставит вас по-настоящему возненавидеть жизнь в долгосрочной перспективе.

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

Учтите все накладные, javascript, CSS, потенциальные файлы cookie для отслеживания, которые сопровождают использование браузера.

Теперь, если вы знаете, что вы хотите, и посмотрите в Chrome Dev Tools, как он загружается - вы можете использовать библиотеки HTTP-запросов VBA, и у вас будет гораздо лучше.

Плюс к использованию HTTP-запроса в том, что даже это поток или фрагменты, вы можете контролировать и легко отслеживать, когда сообщение готово. Веб-страница, на которой вы всегда будете застревать, пытаясь выяснить, что такое код состояния, субфреймы и всякая ерунда. с инструментами HTTP и chrome dev. У вас будет 100% меньше шансов sma sh вашей клавиатуры.

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