Что нового

Нажатие кнопки input при разных условиях

Lum

Новичок
Сообщения
61
Репутация
3
В общем столкнулась с проблемой: на странице в браузере 2 кнопки, одну надо нажать при одном условии, другу при другом. И программа их путает, то есть нажимает на любую. Все перепробовала, может есть способы кроме использования функции _IETagNameGetCollection.

Первая кнопка:
Код:
<INPUT class=take_aim_off onmouseover="this.className='take_aim_on'" onmouseout="this.className='take_aim_off'" type=submit>
Код:
$oInputs = _IETagNameGetCollection($oIE, "input")
		For $oInput2 In $oInputs
			If  $oInput2.name="take_aim_off" And $oInput2.type="submit" Then
				_IEAction($oInput2, "click")
			EndIf
		Next


Вторая кнопка:
Код:
<INPUT class=veg_search_off onmouseover="this.className='veg_search_on'" onmouseout="this.className='veg_search_off'" type=submit>
Код:
$oInputs = _IETagNameGetCollection($oIE, "input")
	For $oInput1 In $oInputs
		If $oInput1.name="veg_search_off" And $oInput1.type="submit"Then
			_IEAction($oInput1, "click")
		EndIf
	Next
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: И снова кнопка и input

Lum
Вам нужно обращаться по индексу элемента (кнопки) в форме.
Код:
#include <IE.au3>
$oIE = _IECreate ("http://www.google.com")
$oForm = _IEFormGetCollection ($oIE, 0)
$oInput = _IEFormElementGetCollection ($oForm, 4)
_IEAction($oInput, "click")
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Re: И снова кнопка и input

Прошу прощения, а как узнать индекс кнопки? :-[
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: И снова кнопка и input

Lum сказал(а):
Прошу прощения, а как узнать индекс кнопки? :-[
Вот, можно так:
Код:
#include <IE.au3>
$oIE = _IECreate("http://google.ru")
$oInputs = _IETagNameGetCollection ($oIE, "input")
Dim $i = 0
For $oInput In $oInputs
    MsgBox(0, "Form Input Type", "Type.: [ " & $oInput.type & " ] Index.: [ " & $i & " ]")
	$i +=1
Next
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Re: И снова кнопка и input

ааааа... Вот оно)) Спасибо))) Огромное спасибо))) :laugh:
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Re: [Сеть, интернет] Как нажать одну кнопку input при одном условии, а другую при другом

Очень странно... Для первой кнопки работает, а вот для второй нет, хотя структура у них одинаковая и индекс найден верно...

Вот это пишет:

IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidDataType
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Lum
Вот пример, по аналогии должно всё работать!
Код:
#include <IE.au3>

$oIE = _IECreate ("http://www.google.com")
$oForm = _IEFormGetCollection ($oIE, 0)
$iMsg = MsgBox(4, "Google","Как вы думаете, вам повезёт!")

_Go($iMsg)

Func _Go($iVal)
	Local $oInput, $oQuery
	Switch $iVal 
		Case 6
		$oInput = _IEFormElementGetCollection($oForm, 4)
		_IEAction($oInput, "click")
		Case 7
		$oQuery = _IEFormElementGetCollection ($oForm, 2)
		_IEFormElementSetValue ($oQuery, "Autoit")
		$oInput = _IEFormElementGetCollection($oForm, 3)
		_IEAction($oInput, "click")
	EndSwitch
EndFunc




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

Lum [?]
IE.au3 V2.4-0 Error from function _IEAction, $_IEStatus_InvalidDataType
Это значить что объект, который вы передаёте в _IEAction($oInput, "click") на самом деле не является объектом, а может быть переменной или константой.
Смотрите код, где-то ошибка.
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Хм... В том-то и дело, что уже весь код перерыла...
Ладно, а есть ли способы кликать помимо _IEAction($oInput, "click"). Где-то ведь на этом этапе ошибка если я правильно поняла.
И еще, если это константа или другой объект, то как это выяснить, не совсем понятно.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Lum сказал(а):
Хм... В том-то и дело, что уже весь код перерыла...
Ладно, а есть ли способы кликать помимо _IEAction($oInput, "click"). Где-то ведь на этом этапе ошибка если я правильно поняла.
И еще, если это константа или другой объект, то как это выяснить, не совсем понятно.
Напишите, пожалуйста, свой код, для того чтобы можно было проанализировать.
Или, дайте ссылку на страницу, и условия, при которых нужно нажимать ту или иную кнопку.
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Попробовала обхитрить немного прогу и получилось вот это:
Код:
$oInputs = _IETagNameGetCollection ($oIE, "input")
	Dim $i = 0
	For $oInput In $oInputs
		$i +=1
		If $i=8 Then
			_IEAction($oInput, "click")
		EndIf
	Next

Не знаю насколько это правильно... но работает...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Lum
Так тоже можно. Только $i должна прибавляться после первого прохода! Иначе вы пропускаете array_collection_input(0)
Код:
$oInputs  = _IETagNameGetCollection ($oIE, "input")
Dim $i = 0

For $oInput In $oInputs
	If $i=8 Then
		_IEAction($oInput, "click")
	EndIf
	$i +=1
Next
 
Верх