Что нового

Клик по кнопке в IE

MrGep

Новичок
Сообщения
74
Репутация
1
Добрый день, я знаю, что тема избитая, но, к сожалению, сам не осилил, даже покопавшись по поиску.
Имеется кнопка.

[box title=TitleBox]<a class="btn" onclick="$( '#fader,#popup_container' ).remove(); return false;">Дальшее</a>[/box]



При нажатии через скрипт консоль извещает о нахождении кнопки, но нажимает что - то предельно невразумительное, возвращая в главное меню. Скорее всего, таких кнопок с таким классом несколько. Вот мой код

Код:
$oButtons = _IETagNameGetCollection($oIE, 'a')
		 For $oButton In $oButtons
			If $oButton.classname = "btn" Then
			$oButton.Click()
			ConsoleWrite("Find")
			ExitLoop
		 EndIf
		 Next


Вопрос - как иначе можно нажать эту кнопку, или хотя бы как добавить больше конкретики, чтобы кнопки не путались.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
MrGep
Попробуйте так:
Код:
#include<IE.au3>
$oIE = _IECreate('<mysite>')
$oIE.document.parentWindow.execScript("setTimeout(function(){$('#fader,#popup_container').remove()},1)")
 
Автор
M

MrGep

Новичок
Сообщения
74
Репутация
1
К сожалению, не сработало.

[box title=TitleBox]<a class="btn btn-confirm-yes" href="#" onclick="Quests.complete(27, '/game.php?village=34511&amp;ajaxaction=quest_complete&amp;h=63f2&amp;quest=27&amp;screen=api'); return false">Выполнить</a>[/box]

А если с таким вариантом? Это другая строка, отвечающая за единый квест №27 в определенной деревни, а там общая, но я вместо номеров переменные типа int подставлю. Или string.


Попытался сделать вот так


Код:
$send = _IEFormElementGetObjByName($oForm_quest, "btn btn-confirm-yes")  
	  _IEAction($send, "click") 
	  _IELoadWait($oIE)



Не получилось
 
Автор
M

MrGep

Новичок
Сообщения
74
Репутация
1
Увы, тоже нет. А может есть возможность найти по номеру строки? Или по названию? Просто у меня он находит, но не кликает.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
MrGep
А если так?

Код:
$oButtons = _IETagNameGetCollection($oIE, 'a')
For $oButton In $oButtons
     If $oButton.innertext = "Далее" Then
            $oButton.Click()
            ConsoleWrite("Find")
            ExitLoop
     EndIf
Next
 
Автор
M

MrGep

Новичок
Сообщения
74
Репутация
1
Ну, вот, мой код(упрощенный), если я правильно понял про смотреть в работе. Сейчас последняя версия от DarWiM


Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#Include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

$sFolder = @ScriptDir

$aFilesList = _FileListToArray($sFolder, "*", 2)
$sList_Data = ""




Opt("GUIResizeMode", $GUI_DOCKBOTTOM)
$hForm = GUICreate ("VP_06", 840,660, 20,20, $WS_SIZEBOX)
Local $oIE = _IECreateEmbedded()
GUISetState()
GUICtrlCreateObj($oIE, 11,31, 820, 510,$GUI_DOCKRIGHT)
$quest = GUICtrlCreateButton("Проверка квеста", 110,540,100,50)
$login = GUICtrlCreateButton("login", 210,540,100,50)

_IENavigate ($oIE,"http://www.voyna-plemyon.ru/game.php")
_IELoadWait($oIE)
GUISetState(@SW_SHOW)




While 1
   Switch GUIGetMsg()
   case $GUI_event_close
	  ExitLoop
   case $quest

$oForm_quest = _IEFormGetCollection($oIE, 0)
	   $quest = _IEGetObjById($oForm_quest, "quest_27")
	   _IEAction($quest, 'click')
		 sleep(250)

	    $oButtons = _IETagNameGetCollection($oIE, 'a')
For $oButton In $oButtons
     If $oButton.innertext = "Далее" Then
            $oButton.Click()
            ConsoleWrite("Find")
            ExitLoop
     EndIf
Next



   case $login
	  $login_value = "Кoсой"
	  $password_value = "777777"
	  $oForm = _IEFormGetCollection($oIE, 0)
            $oPassword = _IEFormElementGetObjByName($oForm,"password")
            $oLogin  = _IEFormElementGetObjByName($oForm,"user")
            $oCheck = _IEGetObjById($oForm, "login_submit_button")
            _IEFormElementSetValue($oLogin, $login_value)
            _IEFormElementSetValue($oPassword, $password_value)
            _IEAction($oCheck, 'click')
            Sleep(250)
            $oLink1 = _IELinkGetCollection($oIE, 68)
		 _IEAction($oLink1,'click')
		 _IELoadWait($oIE)
		 _IENavigate ($oIE,"http://ru27.voyna-plemyon.ru/game.php?village=34511&screen=main")
		 _IELoadWait($oIE)
   EndSwitch
   WEnd
	  GUIDelete()
Exit


Соответственно, сначала логин, потом проверка квеста. Если надо что - то доработать, или почитать, то ткните, пожалуйста, потому что все темы, что нашел, или не помогают, или заканчиваются безответными.


P.S. Логин пишется вроде через английскую букву, так что если логиниться через браузер, то лучше скопировать.
 
Верх