Что нового

Выбор значения из выпадающего списка EI <div class="...">...</div>

Arfull

Чайник
Сообщения
3
Репутация
0
Здравствуйте. Темы про выпадающие меню читал, но, кажется, у меня другая ситуация :(
Помогите разобраться как выбрать определенное значение из выпадающего меню.

Код:
#include <IE.au3> ;библиотека Explorer

Local $oIE = _IECreate("https://гувм.мвд.рф/services/appointment/",0,1,1,1) ;создать окно
_IELoadWait ($oIE) ;ожидает загрузку страницы, прежде чем продолжить

;нажать кнопку
$oButton = _IEGetObjById($oIE, 'confirm');находим объект id="confirm" ... Да, согласен.
_IEAction($oButton, 'click');нажимаем кнопку
_IELoadWait ($oIE) ;ожидает загрузку страницы, прежде чем продолжить

$hIE = WinWait('[Class:IEFrame]') ;приостановить выполнение скрипта до появления указанного окна.
$oIE2 = _IEAttach ($hIE, "Embedded") ;брать эту переменную

$sUrl = _IEPropertyGet ($oIE2, "locationurl") ;возвращает URL для проверки Attach
ConsoleWrite( $sUrl & @CRLF );вывести URL в консоль


;выбор региона (не работает)
$oForm = _IEFormGetObjByName($oIE2, "appointment_form")
  $oSelect = _IEFormElementGetObjByName($oForm, "site_id") ;select name="site_id"
  _IEFormElementOptionSelect($oSelect, "40", 1, "byValue") ;ФМС России по Республике Ингушетия
 

randal

Чайник
Сообщения
18
Репутация
4
Arfull
Всё дело в том, что ваш выпадающий список select-ом не является. Это, грубо говоря, просто набор картинок, которые появляются при нажатии мышкой. Похоже, разработчики сайта постарались максимально усложнить работу "автоматизаторам".
Можно сделать так, хотя это немножко "говнокод" :-[
Код:
;выбор региона
$oDiv = $oIE.document.getElementsByClassName('select-title')
$oDiv.item(0).focus()
$oDiv.item(0).click()
Send('Ингушетия') ; тут вписываем что вам нужно
Send('{DOWN}')
Send('{ENTER}')
 
Автор
A

Arfull

Чайник
Сообщения
3
Репутация
0
[hide]
randal сказал(а):
Arfull
Всё дело в том, что ваш выпадающий список select-ом не является. Это, грубо говоря, просто набор картинок, которые появляются при нажатии мышкой. Похоже, разработчики сайта постарались максимально усложнить работу "автоматизаторам".
Можно сделать так, хотя это немножко "говнокод" :-[
Код:
;выбор региона
$oDiv = $oIE.document.getElementsByClassName('select-title')
$oDiv.item(0).focus()
$oDiv.item(0).click()
Send('Ингушетия') ; тут вписываем что вам нужно
Send('{DOWN}')
Send('{ENTER}')
[/hide]

Огромное спасибо, это лучше чем у меня *ничего* ;)
Еще не сильно тыкал, но:
Код:
;выбор региона
$oDiv = $oIE2.document.getElementsByClassName('select-title')
Sleep (2000) ;Добавил задержку
$oDiv = $oIE2.document.getElementsByClassName('select-title') ;Еще раз взять элемент, т.к. с одним get работает не с первого раза
$oDiv.item(0).focus()
$oDiv.item(0).click()
Send('УФМС России по Республике Ингушетия')
Send('{DOWN}')
Send('{ENTER}')


Наверное, с первого раза взять get не удается, т.к. страница или еще не загрузилась (что вряд ли) или не появилось нужное окно :think:
 
Верх