Что нового

[Автоматизация] Нажатие на кнопку в Internet Explorer

systel

Новичок
Сообщения
26
Репутация
1
Подобные темы уже были, но решения мне не подошли :(

Нужно чтобы нажимало на кнопку в IE.
Вот html код:
Код:
<div class="actions">
<button class="button" type="button" onclick="Building.build(10000001, 14, '30');">
<center>Построить</center>
</button>
</div>

С автоитом знаком немного, но вот с IE начал работать только сейчас, поэтому еще много не знаю. Во многих решениях проблем используется id или title или ссылка на картинку и т.д.
Но как видите здесь ничего этого нету.
Я конечно попробовал использовать класс и тип, но само собой это не сработало:
Код:
$oInputs = _IETagNameGetCollection($oIE, 'input')
		For $oInput In $oInputs
			If $oInput.class == "button" And $oInput.type == "button" Then
				_IEAction($oInput, 'click')
				_IELoadWait($oIE)
			EndIf
		Next


Как мне реализовать нажатие на кнопку?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
systel,
Попробуйте так.
Код:
;...
$oButtons = _IETagNameGetCollection($oIE, 'button')
For $oButton In $oButtons
	If $oButton.classname == 'button' And $oButton.innertext == 'Построить' Then
		_IEAction($oButton, 'click')
		_IELoadWait($oIE)
	EndIf
Next
 
Автор
S

systel

Новичок
Сообщения
26
Репутация
1
Сработало частично.
Вроде как все находит, но вот саму кнопку не нажимает.
 

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Что значит частично? Либо сработало, либо нет :smile:
Два варианта можно проверить. Один, думаю точно должен сработать.

Код:
#include <IE.au3>

$oDivs=_IETagNameGetCollection($oIE, 'div')
If Not @error Then
	For $oDiv In $oDivs
		$sPropDiv=_IEPropertyGet($oDiv, 'outerhtml')
		If Not @error Then
			If StringInStr($sPropDiv, 'button') And StringInStr($sPropDiv, 'Построить') Then
				_IEAction($oDiv, 'click')
				ExitLoop
			EndIf
		EndIf
	Next
EndIf

;~ 2-й вариант,
$oBtns=_IETagNameGetCollection($oIE, 'button')
If Not @error Then
	For $oBtn In $oBtns
		$sPropBtn=_IEPropertyGet($oBtn, 'outerhtml')
		If Not @error Then
			If StringInStr($sPropBtn, 'button') And StringInStr($sPropBtn, 'Построить') Then
				_IEAction($oBtn, 'click')
				ExitLoop
			EndIf
		EndIf
	Next
EndIf
 
Автор
S

systel

Новичок
Сообщения
26
Репутация
1
1й вариант выдает: IE.au3 V2.4-0 Error from function _IEPropertyGet, $_IEStatus_InvalidObjectType
2й вариант: IE.au3 V2.4-0 Error from function _IEPropertyGet, $_IEStatus_InvalidObjectType

Делаю для игры: http://www.angrypets.ru
Может это как-то поможет.
Чтобы дойти до того момент который описывал: сначала нужно расчистить место, потом заходите туда и там будет желтая кнопочка "Построить" - вот её и должно нажимать.


UPD: Оказалась проблема в автоите! (Хотя до этого стояла одна из последних, странно)
Поставил последнюю версию, первый вариант отлично заработал.
Всем спасибо
 
Верх