Jquery события на VBA - PullRequest
       12

Jquery события на VBA

0 голосов
/ 13 января 2019

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

Что мне нужно сделать, так это ответить на ряд вопросов Y / N, которые работают следующим образом, например, у вопроса есть еще два связанных подвопроса. Если вы выберете «Да» в первом, появится второй и так далее. Дело в том, что я не могу заставить VBA запускать все события, которые есть у веб-сайта, что означает, что я могу ответить «Да» на второй вопрос (на первый всегда уже отвечаю вручную, когда я начинаю работать), теперь он не показывает третий и последний вопрос.

First two questions Three questions

Я посмотрел на код JS и, копаясь в нем, я продолжаю находить вещи. До сих пор я знал из отладки в браузере, что в документе есть событие «mousedown», инициируемое вторым именем элемента ответа, который показывает опции Y / N, а затем другое событие «change», которое приходит из элемента div, который упаковывает второй вопрос параграф.

событие mousedown 'mousedown' event

изменить событие 'change' event на правой панели находятся свойства аргумента

Что касается 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 и загрузить другой вопрос?

1 Ответ

0 голосов
/ 06 февраля 2019

После долгих поисков и множества попыток на VBA я пришел к выводу, что невозможно делать то, что я хотел (и если это очень сложно и не удобно), поэтому я решил обратиться к Selenium в Python и решил это менее десяти строк кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...