Что нового

Как кликнуть по кнопке на сайте в IE9?

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Добрый день!
Есть фрагмент кода страницы
Код:
<div class="fields fields_login">
<span class="inp"><input id="user_login" class="focus-blur" name="user[login]" value="Ваш логин" size="30" type="text" autocomplete="off"></span>
<div class="actions">
<span class="sub"><input style="width: 140px;" name="commit" value="Войти" type="submit"></span>

Пытаюсь кликнуть так(фрагмент):
Код:
$oForm = _IEFormGetCollection($oIE, 0)
$oLogin = _IEFormElementGetObjByName($oForm, 'user[login]')
_IEFormElementSetValue($oLogin, '195742')
;здесь я в то же окно, где нужная мне кнопка ввожу логин. все вводится нормально 

$oEnterButton = _IEFormElementGetObjByName($oForm, "commit")
_IEAction($oEnterButton,"focus")
_IEAction($oEnterButton,"click")


Не работает клик. Подскажите, пожалуйста, в чем моя ошибка?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$oForm = _IEFormGetCollection($oIE, 0)
$oLogin = _IEFormElementGetObjByName($oForm, 'user[login]')
_IEFormElementSetValue($oLogin, '195742')
;здесь я в то же окно, где нужная мне кнопка ввожу логин. все вводится нормально
_IEFormSubmit($oForm)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
ViktorSPB,
У Вас в IE9 режим совместимости включен?
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
to этанол)
Не совсем вас понял.
Код:
_IEFormSubmit($oEnterButton)

вместо Action далал. Не помогает. И ошибки нет, (error 0) и толку тоже 0.. :(

madmasles, здравствуйте!
Читал, что с этим бывали у людей проблемы когда поиском искал решение на сайте. Вроде у меня настроено, но на 100% сказать не могу. В параметрах режима представления совместимости сайт указал. Совместим должен быть с IE8? Я, к сожалению, не совсем понял что требуется, с чем совместимость..Может, функция есть в AutoIt, запускающая IE в режиме совместимости?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
ViktorSPB,
не понял какой результат, если вместо
Код:
$oEnterButton = _IEFormElementGetObjByName($oForm, "commit")
_IEAction($oEnterButton,"focus")
_IEAction($oEnterButton,"click")


взять
Код:
_IEFormSubmit($oForm)
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Да, сделал как вы и сказали. Тот же эффект, то есть никакого. Не кликает.
 

astati

Новичок
Сообщения
145
Репутация
4
Попробуй так
Код:
$oInputs = _IETagNameGetCollection($oIEx, 'input')
			For $oinput In $oInputs
				If $oinput.type == 'submit' And $oinput.value == 'Войти' Then
					_IEAction($oinput, 'click')
				EndIf
			Next
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
astati, понял, сделал.
Не помогло. Эту комбинацию находит 1 раз, но не кликает.
Да, вижу что задачка оказалась сложной.. Видимо, там надо не на кнопку кликать, а какое-то поле над ним. Или что-то в этом роде. Буду разбираться.
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Через
Код:
MouseClick("left",2391,656)

Работает. Но это не самый лучший вариант. В идеале, хочу чтоб всё было невидимым. Мне нужно потом на странице обнаружить изменение и выдать мне сигнал. Наблюдать вход на экране мне бы не хотелось..

Другими словами, в принципе, клик работает. И если у вышеперечисленных функций и этой физика процесса одна, то встает вопрос идентификации места клика. А если у них природа разная, то.. больше вопросов..
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Поначитался на форуме похожих тем, у многих проблемы с IE9. Может, тогда, порекомендуете на чем открывать страницу, чтобы не было этих танцев? Есть проверенные решения? Мне вот все-равно, 9, 8, FF да что угодно, лишь бы работало..:( Столько времени на в принципе, как мне кажется, элементарную вещь трачу, а еще столько работы предстоит..
 

astati

Новичок
Сообщения
145
Репутация
4
слушай. я не знаю прокатит ли это с кнопкой, но можно короче открывай окно не браузере.
А в аутоит окне.
Код:
$sUrl = 'твоя ссылка'
   $oIEx  = _IECreateEmbedded()
   $hEmbed_GUI = GuiCreate("_IECreateEmbedded", 700, 700)
   $sPic1 = GUICtrlCreateObj($oIEx, 3, 3, 700, 700)
   GUISetState(@SW_Show); поставь hide если хошь скрыть
   _IENavigate ($oIEx, $sUrl)



Добавлено:
Сообщение автоматически объединено:

Если это не прокатит ставь 8
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Попробовал.
Теперь ругань на
Код:
--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidObjectType
--> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

То есть эти функции не работают со страницей в GUI. А по ним я контролы определяю. Буду разбираться.. Никогда не работал с IE.

Но твой пример про регистрацию на mail у меня работает, может не полностью, но поля поределяет, значения вставляет. Так что продолжаю разбираться с IE9 своим...

В общем так. Переделал скрипт, чтобы работал из GUI, поля заполняет, кнопку находит правильно (могу в ней текст в качестве проверки поменять)
Код:
$oForms = _IETagNameGetCollection($oIE,'input')
For $oForm In $oForms

ConsoleWrite($oForm.name&@CRLF)
If $oForm.name = 'user[login]' then _IEFormElementSetValue($oForm, 'login')
If $oForm.name = 'user[password]' then _IEFormElementSetValue($oForm, 'password')
If $oForm.name = 'captcha' then _IEFormElementSetValue($oForm, $sCaptchaV)
If $oForm.name = 'commit' then
	ConsoleWrite("пытаюсь кликнуть"&@CRLF)
	Sleep(2000)
	_IEFormSubmit($oIE,1)
	ConsoleWrite(@error&@CRLF)
             
             _IEAction($oForm, 'focus')
	ConsoleWrite(@error&@CRLF)
	_IEAction($oForm, 'click')
	ConsoleWrite(@error&@CRLF)
EndIf
Next


Если пытаюсь через _IEFormSubmit($oIE,1) или _IEFormSubmit($oForm,1), то получаю
Код:
--> IE.au3 V2.4-0 Error from function _IEFormSubmit, $_IEStatus_InvalidObjectType
Если через клики, то ошибок 0, но и клика - 0.

Все? Бросать этот IE9? Нет больше вариантов?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
А почему
Код:
_IEFormSubmit($oIE,1)
?

Должно же быть
Код:
_IEFormSubmit($oForm)
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
Да я уже всяко пробую. Написал же
и так _IEFormSubmit($oIE,1) и так _IEFormSubmit($oForm,1)..
когда не понятно почему, начинаю все подряд пробовать.. :(

Уже ищу на странице Action, в примере на форуме было, что по этому слову нашли ID контрола..Не помогает. Как еще объект может называться, на которое мышь активируется и возможно кликнуть? Подозреваю, что поля какое-то натянуто над кнопкой и кликаю по нему мышью.. :wall_brake:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Нет. Должно быть просто
Код:
_IEFormSubmit($oForm)

без ',1'
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
и без "1". Это уже сейчас стал ставить. Ругается $_IEStatus_InvalidObjectType
IEFormSubmit всегда с ошибкой вылетает. Только клики без ошибок но и без толку..
В общем, я понял, ставлю IE 8. :wacko:

тьфу, блин.. не поддерживает W7 :suicide:
 

astati

Новичок
Сообщения
145
Репутация
4
Виктор полный код дай. Я тут 9 поставил. мож разберусь.
 

astati

Новичок
Сообщения
145
Репутация
4
Виктор. посмотрел я твой код и за пару сек написал рабочий.
У тебя была одна смешная ошибка :smile: Какая? вот такая:
Код:
While 1
Wend

КТо будет указывать это в коде? Естественно форма открылась кнопка нажалась и форма сразу закрылась. Недав сайту грузануться :smile:
Поэтому вставь мою комбинацию клика в конец(вместо своей зелени) и все будет робить:
Код:
$oInputs = _IETagNameGetCollection($oIE, 'input')
            For $oinput In $oInputs
                If $oinput.type == 'submit' And $oinput.value == 'Войти' Then
                    _IEAction($oinput, 'click')
                EndIf
            Next
EndIf
Next
While 1
   
WEnd
 
Автор
V

ViktorSPB

Новичок
Сообщения
109
Репутация
0
astati, ты пробовал? У тебя работает?
У себя то я ставил паузы и все такое. Для чистоты эксперимента взял твой код - результат прежний. Может, у меня настройки какие-то надо поправить на IE9?
В общем, главный вопрос: у тебя работает?
 

astati

Новичок
Сообщения
145
Репутация
4
Да у меня работает. Там когда он форму заполнит немног подожди(секи 3-10).
Щас в пм те полный код кину.

P.S. может это из-за разницы аутоит версии? Хотя врятли.
 
Верх