Попытка установить объект элемента HTML с помощью getElementsByID ничего не возвращает; Идентификатор существует на HTML-странице

Я пытаюсь собрать некоторые данные отслеживания с веб-сайта UPS, и я могу заставить это работать, используя элементы управления MSInternet и открывая экземпляр IE, но когда я пытаюсь сделать то же самое, используя XML-запрос, чтобы сэкономить время, я могу Кажется, я не назначаю нужный мне элемент, поэтому я могу извлечь из него innerText.

Кажется, проблема заключается в том, что я установил HTMLTrackStatus с помощью метода getelementsbyid. Когда я помещаю остановку в код прямо перед печатью в непосредственное окно, я проверяю содержимое HTMLTrackStatus, и оно отображается как «Ничего».

Когда я запускаю код, окно ошибки сообщает мне, что объект или переменная не установлены. Это имеет смысл, потому что он не устанавливается, но я не могу понять, почему он не возвращает мой HTML-элемент с использованием этого идентификатора (который существует).

Я могу получить статус отслеживания из этого HTML-элемента, используя элементы управления Интернетом MS и открывая IE с помощью VBA, но это медленно.

Dim XMLPage As New MSXML2.ServerXMLHTTP60 Dim HTMLDoc As New MSHTML.HTMLDocument Dim HTMLTrackStatus As MSHTML.IHTMLElement

XMLPage.Open "GET", "https://www.ups.com/track?loc=en_US&tracknum=1Z9E700W0317182871&requester=WT/trackdetails", False XMLPage.send 'отправить запрос

HTMLDoc.body.innerHTML = XMLPage.responseText

Установить HTMLTrackStatus = HTMLDoc.getElementById("stApp_txtPackageStatus")

Debug.Print HTMLTrackStatus.innerText

Я помещаю свою остановку в строку отладки, и когда я проверяю содержимое HTMLTrackStatus, он возвращает «ничего». почему это не возвращает нужный мне элемент?


person Joozian    schedule 27.08.2019    source источник
comment
Вы должны попробовать HTMLTrackStatus.outerText   -  person EddiGordo    schedule 27.08.2019
comment
Контент загружается динамически из вызова API. См. связанный дубликат.   -  person QHarr    schedule 27.08.2019
comment
@EddiGordo благодарит Эдди, но я думаю, что проблема начинается еще до того, как я пытаюсь напечатать внутренний текст элемента.   -  person Joozian    schedule 27.08.2019
comment
@QHarr просмотрел ссылку, которую вы предоставили, и, похоже, она не отвечает на мой вопрос. Я вижу, что он пытается обеспечить отслеживание, но я не использую JSON (не знаю, что это такое, извините, я новичок во всем этом). Я хотел бы точно знать, почему мой вызов getelementbyid ничего не возвращает, чтобы я мог понять, как его решить. возможно, есть другая тема, которая больше говорит об этой конкретной проблеме? Я пытался искать, но ничего не нашел.   -  person Joozian    schedule 27.08.2019
comment
Вы хотите использовать xhr для получения данных. Данные предоставляются динамически из xhr в API, показанный в этом ответе. Со стандартным xhr на ваш исходный URL-адрес javascript не запускается, поэтому контент отсутствует (дополнительный вызов API отсутствует). Данные из API возвращаются в формате json. Затем вам нужно проанализировать json для получения любой информации, которую вы хотите. Таким образом, вы либо вызываете этот API, либо используете браузер. Содержимое этого json сообщает вам о статусе отслеживания, т.е. о доставке.   -  person QHarr    schedule 27.08.2019
comment
Для получения информации о json см.: json.org и эти   -  person QHarr    schedule 27.08.2019
comment
хорошо, я думаю, мне нужно узнать о json. Благодарность!   -  person Joozian    schedule 27.08.2019