InternetExplorer - удалить указанный элемент c из IE .Document - PullRequest
0 голосов
/ 12 февраля 2020

Я использую VBA для автоматизации получения отчетов со структурированной веб-страницы.

У меня есть следующий блок кода, который изменяет выпадающий элемент для каждого элемента в массиве "

With IE
For Each itemName In itemNames()
i = i + 1
Module2.check_and_wait_for_item ("cboDistrict")
Set Dropdown = .document.getElementsByName("cboDistrict")(0)
Dropdown.Value = itemValues(i)
Dropdown.FireEvent ("onchange")



check_and_wait_for_item ("cmdRptPreview")
Set btnPreview = .document.getElementsByName("cmdRptPreview")(0)
btnPreview.Click

check_and_wait_for_item ("BtnExport")
Set HTMLDoc = .document
write_file_to_dir HTMLDoc, "C:\Users\user\Documents\____thing\", itemName & ".html"
.GoBack

Next itemName
End With

Проблема возникает с IE .GoBack. У меня есть функция, которая проверяет, если JavaScript завершил выполнение зацикливанием, когда на странице отсутствует определенный элемент. «Возвращение» возвращает элемент обратно на страницу, даже если событие JavaScript не завершилось.

Это почему я хочу удалить старый элемент "cmdRptPreview", прежде чем у меня будет проверка функции, завершилось ли событие JavaScript.

Есть ли способ сделать это? Оцените помощь.

1 Ответ

0 голосов
/ 12 февраля 2020

Решением было удалить узел, содержащий элемент, проверяемый функцией JavaScript официант. После .GoBack:

check_and_wait_for_item ("cmdRptPreview")
.document.getElementsByName("cmdRptPreview")(0).ParentNode.RemoveChild .document.getElementsByName("cmdRptPreview")(0)
...