Я пытался автоматизировать процесс, который я делаю на веб-сайте с VBA, но мои знания JavaScript ограничены. Я спрашивал кое-что об этом, но пока не нашел решения.
Что мне нужно сделать, так это ответить на ряд вопросов Y / N, которые работают следующим образом, например, у вопроса есть еще два связанных подвопроса. Если вы выберете «Да» в первом, появится второй и так далее. Дело в том, что я не могу заставить VBA запускать все события, которые есть у веб-сайта, что означает, что я могу ответить «Да» на второй вопрос (на первый всегда уже отвечаю вручную, когда я начинаю работать), теперь он не показывает третий и последний вопрос.
Я посмотрел на код JS и, копаясь в нем, я продолжаю находить вещи. До сих пор я знал из отладки в браузере, что в документе есть событие «mousedown», инициируемое вторым именем элемента ответа, который показывает опции Y / N, а затем другое событие «change», которое приходит из элемента div, который упаковывает второй вопрос параграф.
событие mousedown
изменить событие
на правой панели находятся свойства аргумента
Что касается VBA и попыток вызвать событие, я уже много чего перепробовал ..
.fireEvent
«onchange» или «onclick» не будут работать
.iedoc.parentWindow.execScript
и функция eventHandle()
выдает ошибку.
Это функция в JS
elemData.handle = eventHandle = function() {
// Handle the second event of a trigger and when
// an event is called after a page has unloaded
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
jQuery.event.handle.apply( eventHandle.elem, arguments ) :
undefined;
};
Это не дает ошибки, но ничего не происходит:
Dim event_onChange As Object
Set event_onChange = ieDoc.createEvent("HTMLEvents")
While ieApp.Busy Or ieApp.readyState <> 4: DoEvents: Wend
ieDoc.querySelector("select[name='meetingQuestionAnswer(221010)']").Focus
event_onChange.initEvent "mousedown", True, False
ieDoc.querySelector("select[name='meetingQuestionAnswer(221010)']").dispatchEvent event_onChange
event_onChange.initEvent "change", True, False
ieDoc.querySelector("select.auto-save[name='meetingQuestionAnswer(221010)']").dispatchEvent event_onChange
ieDoc.querySelector("select.auto-save[name='meetingQuestionAnswer(221010)']").Value = "Yes"
событие должно быть отправлено из целевого элемента или элемента currentTarget? или как я мог вызвать события, чтобы показать поле выбора Y / N и загрузить другой вопрос?