InternetExplorer html изменение атрибута - PullRequest
1 голос
/ 12 июля 2020

Исходная веб-страница содержит элемент ввода с aria-expanded='false' и aria-activedescendant="Listbox_18--item-0"

, когда я изменяю этот атрибут на «true» (программно), он расширяется при открытии IE. также удалось изменить «Listbox_18 - item-3».

, но я не могу вызвать событие после изменения. ниже мой код VBA.

IE.Document.body.getElementsByTagName("input")(0).Focus
Debug.Print IE.Document.body.getElementsByTagName("input")(0).setAttribute("aria-expanded", "true")
Debug.Print IE.Document.body.getElementsByTagName("input")(0).setAttribute("aria-activedescendant", "Listbox_18--item-3")
Debug.Print IE.Document.body.getElementsByTagName("input")(0).setAttribute("aria-expanded", "false")

1 Ответ

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

Хорошо, вот что происходит на странице.

Вы имеете дело с элементами в DOM, которые используют javascript для прослушивания событий, затем запускают функции, а затем в конечном итоге вызывают AJAX функция для возврата данных на веб-страницу без повторной загрузки.

Это означает, что вы не можете просто установить атрибуты. Поскольку процесс установки атрибута не регистрирует событие / значения в переменных веб-приложения.

Итак, попробуйте что-то вроде этого, вам нужно будет имитировать действия на странице, чтобы сгенерировать AJAX ответ, особенно потому, что веб-сайт SW использует сгенерированный идентификатор QSI, чтобы указать, какие выборы страницы.

Итак, рабочий процесс на странице: загрузка страницы, события устанавливаются на элементы, ресурсы скрипта удерживать функции. Пользователь щелкает элемент, запускается событие, отмечаются значения выбора, ресурс сценария создает случайный идентификатор, случайный идентификатор является входом в HTTP-запрос ajax, а затем возвращает значения цен из совпадающих идентификаторов.

Я делаю что-то подобное в консоли DevTools, и он эмулирует пользователя, щелкающего элемент. Теперь вы видите, что страница выполняет запрос Ajax и возвращает цены.

document.querySelectorAll('#Listbox_10--item-3 > button')[0].click();

В чем-то более продвинутом, например, в кукольнике, вы можете настроить перехват запроса для поиска этого запроса на странице из ajax, но в VBA вам просто нужно дождаться загрузки и искать страницу, чтобы обновить ее HTML.

Теперь, если у вас был способ захватить идентификатор, отправьте его на сервер в качестве параметра, как вы видите в DevTools - вы можете отправить его с помощью MS XML HTTP и получить этот приятный JSON ответ.

...