Что нового

В веб-интерфейсе при имитации нажатия на "Save Settings" выдаёт "No change!"

pvl57

Новичок
Сообщения
5
Репутация
0
Доброго всем дня! В веб-интерфейсе роутера D-Link Dir-140L после изменения значения "IKE Lifetime" при имитации нажатия на "Save Settings" выдаёт "No change!", хотя изменения вносятся. Почти всё сделал, а тут затык. Помогите, пожалуйста.

Код:
<BODY onmousedown="whichElement(event)" leftMargin="0" rightMargin="0" topMargin="1"><DIV id="MainContent"><TABLE border="0" cellSpacing="1" borderColorDark="#ffffff" cellPadding="2" width="838" bgColor="#ffffff" align="center" height="100%"><TBODY><TR vAlign="top"><TD id="mainform"><DIV id="FormDesc"><SPAN id="headerbut">
 
<INPUT id="_aothers_12_" onclick="submitFuncs()" type="button" value="Save Settings" />
 
</SPAN></DIV></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

Делаю следующим образом:
Код:
$oFrame = _IEFrameGetObjByName ($oIE, "main") ; //change IKE Lifetime
						$oInputs = _IETagNameGetCollection ($oFrame, "input")
						For $oInput In $oInputs
;~ 							GUICtrlSetData($Input1,$oInput.value)
;~ 							Sleep(2000)
							If $oInput.name = "S00706009" Then
								_IEAction($oInput, "focus")
								Local $IKE = StringRight($oInput.value, 1)
								Send("^a")
								Sleep(2000)
								Send("{DEL}")
;~ 								Sleep(2000)
								If $IKE <> 0 Then
									Send("{2}")
									Send("{8}")
									Send("{0}")
									Send("{0}")
									Send("{0}")
									_IEFormSubmit($oIE)
;~ 									_IELoadWait($oIE)
;~ 									_IEFormElementSetValue($oInput, 28000)
									Sleep(2000)
									ExitLoop
								EndIf
								If $IKE <> 1 Then
									Send("{2}")
									Send("{8}")
									Send("{0}")
									Send("{0}")
									Send("{1}")
									_IEFormSubmit($oIE)
;~ 									_IELoadWait($oIE)
;~ 									_IEFormElementSetValue($oInput, 28001)
									Sleep(2000)
									ExitLoop
								EndIf
;~ 								ExitLoop
							EndIf
						Next
						$iStatus = _IEPropertyGet($oIE, "statustext")
						GUICtrlSetData($Input1, $iStatus)
						Sleep(2000)

						$oFrame = _IEFrameGetObjByName ($oIE, "main") ;// Save Settings
						$oInputs = _IETagNameGetCollection ($oFrame, "input")
						For $oInput In $oInputs
;~ 							GUICtrlSetData($Input1,$oInput.value)
;~ 							Sleep(2000)
							If $oInput.value = "Save Settings" Then
								_IEAction($oInput, "click")
								ExitLoop
							EndIf
						Next
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
На другом сайте была подобная проблема, использовал _IEAction($oInput, "blur")
Код:
_IEAction($oInput, "focus")
_IEAction($oInput, "click")
_IEPropertySet($oInput, "value", "28000")
_IEAction($oInput, "blur")
 
Автор
P

pvl57

Новичок
Сообщения
5
Репутация
0
_IEAction($oInput, "blur") не помог. По идее, при нажатии на другую кнопку фокус и так теряется. Что интересно, после сообщения "No Change!" предлагают нажать "Continue" - происходит возврат к предыдущему окну с вводом параметров. Несколько раз сам мышкой повторял цикл Save Settings - No Change - Continue. Но если ткнуть в поле IKE Lifetime (ничего не меняя), а затем Save Settings - настройки сохраняются. Так что, наверно, дело в фокусе. Но вот вопрос - как добиться нужного результата? Буду ещё что-то пробовать.
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Действительно, не установили фокус на кнопку. Вот код, попробуйте
Код:
For $oInput In $oInputs
;~                          GUICtrlSetData($Input1,$oInput.value)
;~                          Sleep(2000)
                            If $oInput.value = "Save Settings" Then
                                _IEAction($oInput, "focus") ; <<<<<<<<<<<
                                Sleep(10)
                                _IEAction($oInput, "click")
                                ExitLoop
                            EndIf
                        Next
 
Автор
P

pvl57

Новичок
Сообщения
5
Репутация
0
Тоже нет нужного результата. Уже и {Enter } после ввода значения посылал, и сымитировал Continue - фокус в Input - снова Save Settings. Нету изменений! Не понимаю... :stars:


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

Код:
<INPUT id="_aothers_12_" onclick="submitFuncs()" type="button" value="Save Settings" />

Может функция submitFuncs() что-то проверяет, например, "физическое" нажатие кнопок мыши/клавиатуры?
Уже попробовал установку фокуса на кнопку и Send("{SPACE}") - :blum:
 
Автор
P

pvl57

Новичок
Сообщения
5
Репутация
0
В общем, всё решилось. И проще, вообще без нажатия Save Settings. Просто по-другому обратился, через элемент формы и последующую её отправку :
Код:
$oFrame = _IEFrameGetObjByName ($oIE, "main") ; //change IKE Lifetime
						$oForm = _IEFormGetObjByName ($oFrame, "main")
						$oInput = _IEFormElementGetObjByName ($oForm, "S00706009")
						$IKE = _IEFormElementGetValue($oInput)
						$IKE = StringRight($IKE, 1)
						If $IKE <> 0 Then
							_IEFormElementSetValue($oInput, "28800")
							_IEFormSubmit ($oForm, 0)
						EndIf
						If $IKE <> 1 Then
							_IEFormElementSetValue($oInput, "28801")
							_IEFormSubmit ($oForm, 0)
						EndIf

Тема закрыта.
 
Верх