1

Тема: AHK: IE COM, выбор из списка

Добрый день! Подскажите пож-та, возможно ли выставить значение из выпадающего списка.


ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("*****")
while ie.readystate <> 4
	continue
sleep 100
	
ie.Document.GetelementById("select2-chosen-5").selectedindex := 1 ; не работает

ie


<div class="select2-drop-mask" id="select2-drop-mask" style="display: block;"></div>

iwb2 leaner


<span class="select2-chosen" id="select2-chosen-5">Диагностика оборудования</span>

2

Re: AHK: IE COM, выбор из списка

inseption86 пишет:

ie


<div class="select2-drop-mask" id="select2-drop-mask" style="display: block;"></div>

iwb2 leaner


<span class="select2-chosen" id="select2-chosen-5">Диагностика оборудования</span>

Это что было?
Выпадающий список должен быть в теге select, вроде.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: IE COM, выбор из списка

teadrinker

Вот так это выглядит и после выбора, страница прогружается полностью

https://cdn1.savepice.ru/uploads/2018/11/14/5d7057c2b35b40f176c738d2a490205e-full.jpg

4

Re: AHK: IE COM, выбор из списка

Не очень понял. По ссылке как раз выпадающие списки в теге select, у вас в коде какие-то div и span.
Приведите пример конкретного выпадающего списка на конкретной странице.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: IE COM, выбор из списка

teadrinker Сайт не могу предоставить, он локальный и я не могу сказать, почему там div и span

6

Re: AHK: IE COM, выбор из списка

Если неизвестно, как устроен элемент, невозможно сказать, как с ним работать программно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: IE COM, выбор из списка

Судя по картинке там стоит input в который через джаваскрипт встраивается div.
Пробуйте кликнуть по input и потом кликнуть по элементу из списка.
По списку скорей всего придется кликать через mouseevent, либо выполнять джаваскрипт напрямую.
http://forum.script-coding.com/viewtopi … 318#p95318

8

Re: AHK: IE COM, выбор из списка

Malcev пишет:
MouseDownEvent.initMouseEvent("mousedown",true,false, _, _, _, _, _, _, _, _, _, _, _, _)

А вот эти _ штуки зачем там?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: IE COM, выбор из списка

Всем спасибо за советы, попробую!

10

Re: AHK: IE COM, выбор из списка

teadrinker пишет:

А вот эти _ штуки зачем там?

Наверное для наглядности.
Я когда тем вопросом задавался, этот код нашел на оф.форуме.

11

Re: AHK: IE COM, выбор из списка

Malcev пишет:

А вот вариант исполнения джаваскрипта напрямую

Вот ещё один:

oIE := ComObjCreate("InternetExplorer.Application")
oIE.navigate("http://help.dottoro.com/external/examples/ljwcseaq/onmousedown_4.htm")
oIE.visible := true

While oIE.readyState != 4 || oIE.document.readyState != "complete" || oIE.busy
   Sleep, 10

oIE.document.parentWindow.execScript("OnButtonUp()")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: IE COM, выбор из списка

Отлично.
Добавил к тому сообщению.

13

Re: AHK: IE COM, выбор из списка

Добрый день! До сих пор не могу разобраться, текст в поле вставляется, а страница дальше не прогружается.


ie.document.querySelector("Span[Id=""select2-chosen-5""]").innerHTML := "Ремонт МФУ HP LaserJet Pro 400 MFP - "
ie.document.querySelector("Span[Id=""select2-chosen-5""]").onchange


ie.document.querySelector("Span[Id=""select2-chosen-5""]").innerHTML := "Ремонт МФУ HP LaserJet Pro 400 MFP - "
Change := ie.document.createEvent("Event")
Change.initEvent("change", true, true)
ie.document.getElementById("select2-chosen-5").dispatchEvent(Change)

Поле ввода:

<a tabindex="-1" class="select2-choice" href="javascript:void(0)">   <span class="select2-chosen" id="select2-chosen-5">-----</span><abbr class="select2-search-choice-close"></abbr>   <span class="select2-arrow" role="presentation"><b role="presentation"></b></span></a>

OuterHTML:

<div title="Ремонт МФУ HP LaserJet Pro 400 MFP - " class="select2-result-label" id="select2-result-label-256" role="option">»<span class="select2-match">Ремонт</span> МФУ HP LaserJet Pro 400 MFP</div>

14

Re: AHK: IE COM, выбор из списка

Почему не хотите кликать мышкой?

15

Re: AHK: IE COM, выбор из списка

Malcev

Пробовал, не кликается!

16

Re: AHK: IE COM, выбор из списка

Приведите код.

17

Re: AHK: IE COM, выбор из списка

Malcev


ie.document.querySelector("Span[Id=""select2-chosen-5""]").click(1)
ie.Document.GetelementById("select2-chosen-5").click(1)
ie.document.getElementsByTagName("Span")[39].click(1)

18

Re: AHK: IE COM, выбор из списка

Зачем вы в методе click указываете параметры?
И внимательно читайте 7 сообщение.

19

Re: AHK: IE COM, выбор из списка

Malcev

click() или click

так же не работает! Через mouseevent, я так понял, это когда уже список отобразится

20

Re: AHK: IE COM, выбор из списка

MouseDownEvent := IE.document.createEvent("MouseEvent")
MouseDownEvent.initMouseEvent("mousedown",true,false, _, _, _, _, _, _, _, _, _, _, _, _)

MouseUpEvent := IE.document.createEvent("MouseEvent")
MouseUpEvent.initMouseEvent("mouseup",true,false, _, _, _, _, _, _, _, _, _, _, _, _)


IE.document.querySelector("Span[Id=""select2-chosen-5""]").dispatchEvent(MouseDownEvent)
IE.document.querySelector("Span[Id=""select2-chosen-5""]").dispatchEvent(MouseUpEvent)

return

)))).Спасибо!!!

21

Re: AHK: IE COM, выбор из списка

Добрый  вечер!


MouseDownEvent := IE.document.createEvent("MouseEvent")
MouseDownEvent.initMouseEvent("mousedown",true,false, _, _, _, _, _, _, _, _, _, _, _, _)

MouseUpEvent := IE.document.createEvent("MouseEvent")
MouseUpEvent.initMouseEvent("mouseup",true,false, _, _, _, _, _, _, _, _, _, _, _, _)


IE.document.querySelector("Span[Id=""dropdown_newprofile911601539""]").dispatchEvent(MouseDownEvent)
Send {down}
sleep 200
Send {Tab}{Enter} 

Работает!, а возможно ли это сделать не через Send? а сразу? что-то типа такого:


ie.Document.getelementById("dropdown_newprofile911601539").selectedIndex :=1 или ...value := "Example1"
ie.Document.getelementById("dropdown_newprofile911601539").onchange

<select name="newprofile" id="dropdown_newprofile911601539" onchange="submit()" size="1" tabindex="-1" title="" style="display: none;"><option value="8">Example1</option><option value="13" selected="">Exampl2</option></select>

<option value="8">Example1</option>
<option value="13" selected="">Example2</option>


<script type="text/javascript">
//<![CDATA[

$('#dropdown_newprofile911601539').select2({
                  width: '150px',
                  closeOnSelect: false,
                  dropdownAutoWidth: true,
                  quietMillis: 100,
                  minimumResultsForSearch: 10,
                  formatSelection: function(object, container) {
                     text = object.text;
                     if (object.element[0].parentElement.nodeName == 'OPTGROUP') {
                        text = object.element[0].parentElement.getAttribute('label') + ' - ' + text;
                     }
                     return text;
                  },
                  formatResult: function (result, container) {
                     container.attr('title', result.title || result.element[0].title);
                     return result.text;
                  }

             });

22

Re: AHK: IE COM, выбор из списка

Какой сайт и что вы хотите выбрать?

23

Re: AHK: IE COM, выбор из списка

Malcev
Да всё тот же (см.выше), он локальный на работе

24 (изменено: Malcev, 2018-12-19 21:13:52)

Re: AHK: IE COM, выбор из списка

Читайте эти темы:
http://forum.script-coding.com/viewtopic.php?id=9183
http://forum.script-coding.com/viewtopic.php?id=14379
В консоле хрома изучайте какие события отправляете.

События проще создавать по такому алгоритму:
событие mousedown

event := oIE.document.createEvent("Event")
event.initEvent("mousedown", true, false)
target.dispatchEvent(event)

событие keydown

event := oIE.document.createEvent("Event")
event.initEvent("keydown", true, false)
event.keyCode := 13 ; enter
target.dispatchEvent(event)

Список событий:
https://developer.mozilla.org/en-US/docs/Web/Events

25

Re: AHK: IE COM, выбор из списка

Добрый день! Всем спасибо за ответы!

ie.document.getElementsByName("*****")[0].value := ***
Change := ie.document.createEvent("Event")
Change.initEvent("change", true, true)
ie.document.getElementsByName("******")[0].dispatchEvent(Change)

А возможно ли узнать profileId (в данном случае "2222"), имея  data-profile-id (в данном случае "1111")?

<a target="_blank" data-bind="text:LastName() + ' ' + FirstName()+ ' ' + SecondName(), attr:{'data-profile-id':$data.TicketID, 'href': '/**/***/****/****' + '?profileId=' + $data.ProfileID()}" data-profile-id="1111" href="/**/**/***/***?profileId=2222">Смирнов Александр Алексеевич</a>