VBA IE задействует «список» и выбирает «onchange» «значения параметров» - PullRequest
0 голосов
/ 28 июня 2018

В настоящее время я работаю над процессом автоматизации, который включает VBA и IE. Все идет в ногу со временем благодаря многочисленным действиям, которые выполняет мой код. Проблема в том, что я подхожу к части, где у меня есть 2 раскрывающихся списка, второй появляется после того, как в первом из них сделан определенный выбор.

Часть кода, которую я разработал [довольно грубая] для этого раздела, выглядит следующим образом:

Dim dropY As Object
Set dropY = IE.Document.getelementbyid("selectedListType")
dropY.Focus
Application.SendKeys "{DOWN 4}"

Do While IE.Busy
Application.Wait DateAdd("s", 2, Now)
Loop
Do Until .ReadyState = 4
DoEvents
Loop
'second list
Dim dropZ As Object
Set dropZ = IE.Document.getelementbyid("dataSet")
dropZ.Focus 'I can see that the window is being selected
Application.SendKeys ("{DOWN 1}") 'at this point the code fails
Application.SendKeys ("{ENTER}")

Вопрос в том, как подойти к выбору в обоих выпадающих списках, чтобы избежать будущих ошибок? Ниже приведен источник сайта.

'first list
Select List Type
<select name="selectedListType" id="selectedListType" class="regular" onchange="onSubmitOrgConfig(2)">
<option value="Choice1"
>
Country Lists
</option>
<option value="Choice2"
>
Region Lists
</option>
<option value="Choice3"
>
Area Lists
</option>
<option value="Choice4"
>
Aggregated Lists
</option>
<option value="OTHER"
selected>
Other Lists
</option>
<option value="Other1"
>
Secure List
</option>
</select>
&nbsp;&nbsp;&nbsp;&nbsp;
Select List
<select name="dataSet" id="dataSet" class="regular" onchange="onSubmitDataSet(6, this.value);">
<option value="">--Select--</option>
<option value="LIST_1"
>
BLACKLIST_LIST
</option>
<option value="LIST_2"
>
BLUE_LIST
</option>
<option value="LIST_3"
selected>
RED_LIST
</option>
<option value="LIST_4"
>
YELL_LIST
</option>
<option value="LIST_5"
>
PURP_LIST
</option>
<option value="LIST_6"
>
BL_LIST
</option>
<option value="LIST_7"
>
ORA_LIST
</option>
<option value="LIST_8"
>
NOCOL_LIST
</option>
<option value="LIST_999"
>
LIST_999
</option>
</select>

1 Ответ

0 голосов
/ 28 июня 2018

ТЛ; др;

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

Например, я не знаю, нужно ли вам сначала щелкнуть по списку, выбрать элемент, затем присоединенный javascript запускается автоматически или вам нужно запустить событие. Тогда, если вам придется повторить это для второго. Итак, ниже я показал вам, как я буду пытаться выполнить каждое из этих действий в отдельности, чтобы вы могли поиграть с ними, чтобы увидеть, что работает. Мы можем уточнить с обратной связью.


выпадающий список selectedListType:

Вы можете попробовать щелкнуть первый список с помощью

.document.querySelector("#selectedListType").Click

Вы можете выбрать элементы из первого списка с помощью

.document.querySelector("#selectedListType [value='Choice1']")

Изменить Choice1 в зависимости от ситуации

Так помечено как selected может быть

.document.querySelector("#selectedListType [value='Choice1']").Selected = True

раскрывающийся список данных:

Вы можете попробовать щелкнуть по второму списку с помощью

.document.querySelector("#dataSet").Click

Вы можете выбрать элементы из второго списка с помощью

.document.querySelector("#dataSet option[value='LIST_1']")

Изменить LIST_1 в зависимости от ситуации

Так помечено как selected может быть

.document.querySelector("#dataSet option[value='LIST_1']").Selected = True

onchange событие:

В обоих списках есть событие onchange:

Вы можете вызвать их с помощью

 .document.querySelector("#selectedListType").FireEvent "onchange"
 .document.querySelector("#dataSet").FireEvent "onchange"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...