Что нового

Проблема с имитацией mouseclick

valdur2000

Знающий
Сообщения
155
Репутация
7
Здравствуйте уважаемые,
есть форма, в которую вносятся адресные данные, после этого жмется кнопка "проверить", без обновления страницы внизу появляется дропдаун с проверенным адресом. на дропдаун надо кликнуть мышью, выбрать вторую строчку и кликнуть на нее. тогда внизу появляется кнопка "дальше". что только не перепробовал вместо реального клика и _IEFormElementOptionSelect и _IEAction, ничего не получается. _IEAktion($oAdresspruf,"focus") выбирает нужную строку и передает фокус, потом пробовал Enter жать.. , а "click" не срабатывает... вот код дропдауна
Код:
<SELECT style="BORDER-BOTTOM: #ff0000 3px solid; BORDER-LEFT: #ff0000 3px solid; BORDER-TOP: #ff0000 3px solid; BORDER-RIGHT: #ff0000 3px solid" id=address class=text name=address sizcache="110" sizset="139" jQuery1332763156000="63"> <OPTION value="">Bitte Auswahlen</OPTION><OPTION selected value=DEU|1768294|0NODEUBAHcBwAAAAABAwEAAAAAGZdO0YAhIAIAAAAAAAAA..9CAAAAAP....8AAAAAAAAAAAAxMCxMaW5kZW5zdHIsMTA5NjkA>BERLIN</OPTION></SELECT>
На первую кнопку "проверить" я могу нажать программно, выбрать нужную строку в появившемся дропдауне, но что б появились следующая кнопка "далее" работает только реальный маусклик...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
valdur2000,
Код:
_IEFormElementOptionSelect()
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
to madmasles

Код:
_IEFormElementOptionSelect ($oAdresspruf,1,1,"byindex")
Sleep(100)
_IEAction($oAdresspruf,"click")

так и делаю. _IEFormElementOptionSelect по умолчанию должен кликать, выбирает, но не кликает..
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
valdur2000
Код:
;...
$oSelect = _IEFormElementGetObjByName ($oForm, "address")
_IEFormElementOptionSelect ($oSelect, "BERLIN", 1, "byText")
;...
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
to Garrett

Код:
$oSelect = _IEFormElementGetObjByName ($oForm, "address")
_IEFormElementOptionSelect ($oSelect, "BERLIN", 1, "byText")

по тексту тоже результат отрицательный.. правильная строка в дропдауне появляется, но клика нету.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Все элементы формы только подготавливают данные к отправке, а кнопка SUBMIT, отсылает. Посему кликать нужно по кнопке, а не по SELECT.
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
to Garrett

Пока я не кликну на строку в дропдауне, кнопка "далее" не появляется.. а после клика, страничка не обновляется, но внизу появляются правильные данные и кнопка "далее".
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Попробуйте так:
Код:
;...
$oSelect = _IEFormElementGetObjByName ($oForm, "address")
_IEFormElementOptionSelect ($oSelect, "BERLIN", 1, "byText")
_IEAction ($oSubmit, "focus")
_IEAction ($oSubmit, "click")
;...
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
to Garrett

Код:
$oSelect = _IEFormElementGetObjByName ($oForm, "address")
_IEFormElementOptionSelect ($oSelect, "BERLIN", 1, "byText")
_IEAction ($oSubmit, "focus")
_IEAction ($oSubmit, "click")

Пробовал... (одинокая слеза сползла по щеке..) Пробовал все... выбирается строка, фокус передается, но не кликается...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Дайте ссылку на сайт.
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
to Garrett

А можно в личку? и нужно объяснить, как до страницы добраться...
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
Может есть еще какие-то возможности кроме вышеперепробованных?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
valdur2000
Вот ваш код ( Base: WinXPSp2 IE7 )
Не забудьте подставить данные!

Код:
#include <IE.au3>

#Region Data

Global $sURL			= ""
Global $sContactNumber	= ""
Global $sSalutation		= ""
Global $sFirstName		= ""
Global $sLastName		= ""
Global $sDate			= ""
Global $sMonth			= ""
Global $sYear			= ""
Global $sCodeFind		= ""
Global $sArea			= ""
Global $sAddress1		= ""
Global $sAddress		= ""

#EndRegion Data

$oIE = _IECreate($sURL)

;~ Step 1
$oForm = _IEFormGetCollection($oIE, 1)
$oSelect = _IEFormElementGetObjByName($oForm, "addressData.contactNumber")
_IEFormElementSetValue($oSelect, $sContactNumber)
$oButton = _IETagNameGetCollection($oForm, "button", 0)
_IEAction($oButton, 'click')
_IELoadWait($oIE)

;~ Step 2
$oForm = _IEFormGetCollection($oIE, 1)
$oSelect = _IEFormElementGetObjByName($oForm, "addressData.salutationId")
_IEFormElementOptionSelect($oSelect, $sSalutation, 1, "byText")
$oInput = _IEFormElementGetObjByName ($oForm, "addressData.firstName")
_IEFormElementSetValue($oInput, $sFirstName)
$oInput = _IEFormElementGetObjByName ($oForm, "addressData.lastName")
_IEFormElementSetValue($oInput, $sLastName)
$oSelect = _IEFormElementGetObjByName($oForm, "dobDate")
_IEFormElementOptionSelect($oSelect, $sDate, 1, "byText")
$oSelect = _IEFormElementGetObjByName($oForm, "dobMonth")
_IEFormElementOptionSelect ($oSelect, $sMonth, 1, "byText")
$oSelect = _IEFormElementGetObjByName($oForm, "dobYear")
_IEFormElementOptionSelect($oSelect, $sYear, 1, "byText")
$oInput = _IEFormElementGetObjByName($oForm, "pCodeFind")
_IEFormElementSetValue($oInput, $sCodeFind)
$oInput = _IEFormElementGetObjByName($oForm, "area")
_IEFormElementSetValue($oInput, $sArea)
$oInput = _IEFormElementGetObjByName($oForm, "address1")
_IEFormElementSetValue($oInput, $sAddress1)
$oButton = _IETagNameGetCollection($oForm, "button", 0)
_IEAction($oButton, 'click')
$oSelect = _IEFormElementGetObjByName($oForm, "address")
;~ _IEAction($oSelect, 'click') ; строка 'A' отвечает за показ скрытого содержимого (опционально)
_IEFormElementOptionSelect($oSelect, $sAddress, 1, "byText")
;~ _IEAction($oSelect, 'blur') ; строка 'B' отвечает за показ скрытого содержимого (опционально)
$oButton = _IETagNameGetCollection($oForm, "button", 2)
; Если есть желание показать скрытое содержимое, то строку ( If _ShowBtn($oButton) Then _ ) нужно закомментировать, а строки 'A' и 'B' раскомментировать.
If _ShowBtn($oButton) Then _
;~ _IEAction($oButton, 'click') ; Это переход к III й стадии ( jetzt aktivieren ). Для перехода раскомментировать!

#cs 
	[quote] "...а дальше справлюсь сам." :)[quote]
	Re: no problem ;)
#ce 


Func _ShowBtn($o_Object)
	$o_Object.style.display = "block"
	Return 1
EndFunc ;==>_ShowBtn
 
Автор
V

valdur2000

Знающий
Сообщения
155
Репутация
7
Задача решена. у вас понятный для меня код, не пойму почему у меня не получалось. Большое спасибо.
 
Верх