Выберите параметр в раскрывающемся меню JavaScript с помощью VBA

Чтобы выбрать «Закрыто» из этого раскрывающегося меню с помощью макроса:

<div class = "modal ui-dialog-content ui-widget-content" id = "pausingModal" scrolltop = "0" scrollleft = "0" style = "width: auto; min-height: 0px; height: auto;">
<label>Please specify the reason</label>
<div class = "row">
<div class = "select2-container select2 reason select2-container-active select2-dropdown-open" id = "s2id_autogen2" style = "width: 100%"><a href = "javascript:void(0)" class = "select2-choice select2-default" tabindex = "-1">   <span class = "select2-chosen" id = "select2-chosen-3">Select a reason</span><abbr class = "select2-search-choice-close"></abbr>   <span class = "select2-arrow" role = "presentation"><b role = "presentation"></b></span></a><label for = "s2id_autogen3" class = "select2-offscreen"></label><input class = "select2-focusser select2-offscreen" type = "text" aria-haspopup = "true" role = "button" aria-labelledby = "select2-chosen-3" id = "s2id_autogen3" disabled = ""></div><select class = "select2 reason select2-offscreen" style = "width: 100%" tabindex = "-1" title = "">
<option></option>
<optgroup label = "Related">
<option data-pause-type = "hard_pause" data-show-text-area = "false" value = "1">
Closed
</option>

Я пробовал разные решения, пытался получить все имена параметров, затем выбрать внутренний текст, но параметр не выбирается в меню:

For Each obj In objIE.Document.getElementsByClassName("select2 reason").getElementsByTagName("option")
If obj.innerText = "Closed" Then
obj.Selected = True
End If
Next

For Each obj In objIE.Document.getElementsByClassName("select2 reason").getElementsByTagName("option")
If obj.Value = "1" Then
obj.Selected = True
End If
Next

Я пробовал с событием onchange:

Dim o
For Each o In objIE.Options
    If o.Value = "1" Then
        o.Selected = True
        Exit For
    End If
Next

Dim objEvent
Set objEvent = objIE.Document.createEvent("HTMLEvents")
objEvent.initEvent "change", False, True
objIE.dispatchEvent objEvent

Обновлено: оказывается, в коде был javascript, поэтому я изменил его следующим образом:

For Each obj In objIE.Document.getElementsByTagName("span")
If obj.id = "select2-chosen-3" Then
obj.Focus
obj.innerText = "Business Closed Permanently"
Exit For
End If
Next

Он заполняет меню, но когда я нажимаю на него, кажется, что ничего не было выбрано.

Затем я попытался добавить:

For Each obj In objIE.Document.getElementsByTagName("a")
If obj.className = "select2-choice select2-default" Then
obj.Click
Exit For
End If
Next

Но это не работает.

Почему вы используете VBA вместо JS?

Charlie 06.04.2018 04:35

Спасибо за ваш ответ. Я пишу макрос для доступа к этому сайту и автоматизации командных задач. Вы хотите сказать, что это слишком сложно сделать с VBA?

Laure Jacquon 06.04.2018 04:44

Вы можете попробовать установить значение самого выбора

Charlie 06.04.2018 08:45

автоматизировать? Это какой-то нюанс по автомату?

AJD 06.04.2018 09:32

Вы можете попробовать следующий синтаксис objIE.Document..getElementById("pausingModal").selectedIndex = 1objIE.Document..getElementById("pausingModal").FireEvent ("onchange")

arun v 06.04.2018 11:40

Спасибо за ответ, я пробовал, но все равно не повезло, ничего не выбирается.

Laure Jacquon 09.04.2018 04:27

Я отредактировал свой пост предложенным вами решением.

Laure Jacquon 09.04.2018 05:30

Это внутренний URL? Сможете ли вы собрать весь цикл тегов опций до тех пор, пока не будет найден текст «Закрыто». Нажмите?

QHarr 09.04.2018 05:34

Да, это внутренний URL. Я пробовал, но ничего не выбрано. Для каждого объекта в objIE.Document.getElementsByTagName ("option") Если obj.innerText = "Closed" Тогда obj.Click

Laure Jacquon 09.04.2018 11:29

Помогло бы я, если бы я добавил больше HTML-кода?

Laure Jacquon 09.04.2018 11:33

Присутствует ли Closed в innerText, т.е. когда вы зацикливаете, он найден?

QHarr 09.04.2018 11:35

Да найдено. С помощью getElementsByTagName ("option") с innertext = "Closed" я могу записать его на листе. Но щелкнуть не удалось.

Laure Jacquon 09.04.2018 11:38

Есть ли какие-либо связанные события, которые вы можете запустить, или jscript, который вы можете выполнить? Я не вижу ничего из вышеперечисленного, но подумал, что упомяну.

QHarr 09.04.2018 16:25

На самом деле я неправильно понял HTML-код, там был элемент javascript. Я отредактировал свой пост. Затем я написал: For Each obj In objIE.Document.getElementsByTagName("span") If obj.id = "select2-chosen-3" Then obj.Focus obj.innerText = "Closed" Наконец-то он заполняет мое меню! Но затем, когда код нажимает ОК, похоже, что ничего не было выбрано. Есть ли у вас какие-нибудь идеи?

Laure Jacquon 10.04.2018 11:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
14
635
0

Другие вопросы по теме