Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / В браузере не отображается выбранный макросом <option> в <select> / 8 сообщений из 8, страница 1 из 1
15.10.2019, 16:32
    #39876655
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Здравствуйте!

Делаю парсинг. На сайте есть поля-параметры для фильтра. В парсинге делаю программный
1. ввод числа в теге <input>
2. выбор <option> в <select>

Есть макрос
VBA
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
...
Dim NotificationNumber As MSHTML.HTMLInputElement
Set NotificationNumber = IE.document.getElementByid("input1")
NotificationNumber.value = cl_FilterOptions.NotificationNumber
           
Dim dropOptions As MSHTML.HTMLSelectElement
Set dropOptions = IE.document.getElementsByClassName("chosen-container")(0).PreviousSibling
Dim op As Object
For Each op In dropOptions.Options
    If op.value = 2 Then
        op.Selected = True
        Exit For
    End If
Next op
            
Dim HTMLButton As MSHTML.HTMLInputElement
Set HTMLButton = IE.document.getElementsByClassName("c-btn")(0)
HTMLButton.Click

Do Until IE.READYSTATE = 4
    DoEvents
Loop     
...

В теге <input> число вводится нормально и видно в браузере сразу. Тег <option> программно выбирается, в окне wathes видно, что выбран, но в браузере все равно пустое это поле. HTMLButton.Click нормально работает, нажимает.

Почему в браузере не видно, что выбран option, хотя в окне Wathes видно, что выбран? Как правильно написать?
...
Рейтинг: 0 / 0
15.10.2019, 16:42
    #39876664
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Код: vbnet
1.
selectedIndex 

нужно выставить
...
Рейтинг: 0 / 0
15.10.2019, 19:07
    #39876729
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Konst_One
Код: vbnet
1.
selectedIndex 

нужно выставить
Вариант1
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim SelectElement As MSHTML.HTMLSelectElement
Set SelectElement = IE.document.getElementsByClassName("chosen-container")(0).PreviousSibling
'Dim OptionElement As MSHTML.HTMLOptionElement
                
SelectElement.Focus
SelectElement.selectedIndex = cl_FilterOptions.StatusIndex
SelectElement.FireEvent "onChange"

Вариант2
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim SelectElement As MSHTML.HTMLSelectElement
Set SelectElement = IE.document.getElementsByClassName("chosen-container")(0).PreviousSibling
Dim OptionElement As MSHTML.HTMLOptionElement

SelectElement.Focus
For Each OptionElement In SelectElement
    If OptionElement.value = CStr(cl_FilterOptions.StatusIndex) Then    
        OptionElement.Selected = True
        Exit For
    End If
Next OptionElement

Вариант3
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim SelectElement As MSHTML.HTMLSelectElement
Set SelectElement = IE.document.getElementsByClassName("chosen-container")(0).PreviousSibling
Dim OptionElement As MSHTML.HTMLOptionElemen

For Each OptionElement In SelectElement.Options
    If OptionElement.value = CStr(cl_FilterOptions.StatusIndex) Then
        OptionElement.Selected = True
        Exit For
    End If
Next OptionElement

Все три варианта не работают.

Даже после строки
Код: vbnet
1.
SelectElement.Focus

поле в браузере не выделяется никак.
...
Рейтинг: 0 / 0
16.10.2019, 13:39
    #39877046
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Если в браузере на сайте на элементе, где присутствует параметры для ввода, нажать на "Посмотреть код", то получим такой HTML-код:
HTML
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<div class="block">
    <h5 class="tt-u">Поиск товаров</h5>
    <form method="get" action="/torgi/ajax_search/" id="torgi-form">
        <div class="b-form">

		<p class="t-gray-italic">Номер</p>

	        <div class="b-form__cell">
        	        <input type="text" name="torgi[bidnumber]" id="torg-inp01" class="b-form__input">
                        <div class="b-form__input-clear" style="bottom: 17px;"></div>
            	</div>

	            <p class="t-gray-italic">Статус</p>

	        <select name="torgi[status]" class="b-select" style="display: none;">
        	        <option value="">Выберите статус</option>
                	<option value="0">Статус1</option>
	                <option value="1">Статус2</option>
        		<option value="2">Статус3</option>
	                <option value="3">Статус4</option>                                   
		</select>
		<div class="chosen-container chosen-container-single" style="width: 100%;" title="">
			<a class="chosen-single">
				<span>Выберите статус</span>
				<div><b></b></div>
			</a>
			<div class="chosen-drop">
				<div class="chosen-search">
					<input type="text" autocomplete="off">
				</div>
				<ul class="chosen-results">
					<li class="active-result result-selected" data-option-array-index="0" style="">Выберите статус</li>
					<li class="active-result" data-option-array-index="1" style="">Статус1</li>
					<li class="active-result" data-option-array-index="2" style="">Статус2</li>
					<li class="active-result" data-option-array-index="3" style="">Статус3</li>
					<li class="active-result" data-option-array-index="4" style="">Статус4</li>
				</ul>
			</div>
		</div>

		<script>
                    <!-- ... --> 
		</script>	
     </form>
</div>

Только вот не разобрался для чего в коде еще список со статусами ( class="chosen-container chosen-container-single" ). Может быть это для событийной процедуры JavaScript и из за этого VBA не смог выбрать <option>. И там первый пункт (Статус1) имеет индекс 1, а не 0 ( <li class="active-result" data-option-array-index="1" style="">Статус1</li> ).

И если нажать на "Просмотр кода страницы", то почему то class="chosen-container chosen-container-single" отсутствует.

Еще учитывая, что код смотрелся в Google Chrome и VBA использует Internet Explorer.
...
Рейтинг: 0 / 0
16.10.2019, 13:45
    #39877047
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
ferzmikkнажать на "Посмотреть код",таким образом ты получаешь только голый текстовый документ, который изначально был загружен с сервера. Изменения в DOM-модели таким образом ты не увидишь.
...
Рейтинг: 0 / 0
16.10.2019, 13:56
    #39877060
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Как можно еще программно выбрать <option> в <select>?

Не понимаю, почему не выбирается <option>, хотя в Watches , видно, что значение устанавливается и в первый <input> нормально вводится.
...
Рейтинг: 0 / 0
16.10.2019, 14:06
    #39877066
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
ferzmikkНе понимаю, почему не выбирается <option>, хотя в Watches , видно, что значение устанавливаетсяМожет быть такое, что какие то скрипты JavaScript влияют и при этом до объекта Internet Explorer не доходят команды?
...
Рейтинг: 0 / 0
17.10.2019, 14:57
    #39877742
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В браузере не отображается выбранный макросом <option> в <select>
Даже пытаюсь подключиться к другому <select> на этом же сайте, все равно также не выбирает <option>.

У <select> есть особенности, при которых могут программно не выбираться <option>? На что можно еще обратить внимание?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / В браузере не отображается выбранный макросом <option> в <select> / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]