У меня следующий код (пробовал разные варианты, это самый новый):
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "URL1"
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
ie.document.getElementById("_58_login").Value = login
ie.document.getElementById("_58_password").Value = password
ie.document.getElementsByClassName("btn btn-primary")(0).Click
ie.navigate "URL2"
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
Set elements = ie.document.getElementsByTagName("title")
MsgBox elements(0).innerText
По сути, сначала он переходит на страницу входа, входит в систему, а затем переходит на нужную страницу с информацией, которую я хочу очистить. И браузер действительно переходит на вторую страницу правильно. Однако, хотя вторая страница загружена и с ней можно взаимодействовать, похоже, что «ie.document» все еще содержит страницу входа (msgbox отображает заголовок страницы входа, и я не могу получить GetElementsByTagName, который должен присутствовать на второй странице).
Я пытался использовать цикл DoEvents везде. Кроме того, я пытался использовать Application.wait, но это приводит к ошибке (метод приложения "wait" не выполнен 1004).
Так что я ожидаю:
1. Перейдите на страницу входа и войдите (нажмите кнопку).
2. Перейдите на другую страницу, нажмите некоторые кнопки (веб-сайт сильно написан на скрипте и использует скриптовые кнопки для дальнейшей навигации) и, наконец, получите таблицу с данными.