snoitaleR сказал(а):B1ad3
По ссылкам "Мир 1" и "Мир 10" не получается пройти даже напрямую, без скрипта...
B1ad3 сказал(а):а как быть со входом в игру?
#include <IE.au3>
Dim $sMyString = "Мир 1"
$oIE = _IECreate ("http://voyna-plemyon.ru")
$oLogin = _IEGetObjById($oIE,"user")
$oPass = _IEGetObjById($oIE,"password")
$oSubmit = _IEGetObjById($oIE,"non_script_login")
_IEFormElementSetValue($oLogin,"kiprida")
_IEFormElementSetValue($oPass,"159357")
_IEAction ($oSubmit, "click")
Sleep(250)
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sMyString) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
B1ad3 сказал(а):У меня не работает :(
Sleep(1000)
#include <IE.au3>
Dim $sWorld = "Мир 1"
$oIE = _IECreate ("http://voyna-plemyon.ru")
$oLogin = _IEGetObjById($oIE,"user")
$oPass = _IEGetObjById($oIE,"password")
_IEFormElementSetValue($oLogin,"kiprida")
_IEFormElementSetValue($oPass,"159357")
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, "Вход") Then
_IEAction($oLink, "click")
EndIf
Next
; Listener
While _World($sWorld)
Sleep(100)
WEnd
Func _World($sProp1)
$oWorlds = _IELinkGetCollection($oIE)
For $oWorld in $oWorlds
$sWorldText = _IEPropertyGet($oWorld, "innerText")
If StringInStr($sWorldText, $sProp1) Then
_IEAction($oWorld, "click")
Return 0
EndIf
Next
Return 1
EndFunc
B1ad3 сказал(а):У меня еще один вопросик, а как нажать потом на ссылку Ратуша?
#include <IE.au3>
Global $oIE
_Login("http://voyna-plemyon.ru", "kiprida", "159357", "Мир 1")
_LinksClick("main", "Ратуша")
; ~~~~~~~~~~~~~
; Functions
; ~~~~~~~~~~~~~
Func _Login($sURL, $sLogin, $sPass, $sWorld)
$oIE = _IECreate ($sURL)
$oLogin = _IEGetObjById($oIE, "user")
$oPass = _IEGetObjById($oIE, "password")
_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, "Вход") Then
_IEAction($oLink, "click")
EndIf
Next
; Listener
While _SelectWorld($sWorld)
Sleep(100)
WEnd
_IELoadWait($oIE)
EndFunc
Func _SelectWorld($sWorld)
$oWorlds = _IELinkGetCollection($oIE)
For $oWorld in $oWorlds
$sWorldText = _IEPropertyGet($oWorld, "innerText")
If StringInStr($sWorldText, $sWorld) Then
_IEAction($oWorld, "click")
Return 0
EndIf
Next
Return 1
EndFunc
Func _LinksClick($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
EndIf
Next
EndFunc
Я собственно на это и рассчитывал когда вам написал функции.B1ad3 сказал(а):Я думал, что после того, как получу скрипт для нажатия на ратушу смогу понять, что к чему и легко буду подставлять свои ссылки.
B1ad3 сказал(а):Когда пробую поменять Ратушу, например, на Казарму, чтобы нажималась она в скрипте - ничего не выходит...
Вот для примера после нажатия на Ратушу мне надо, чтобы нажалось "Достроить до 5-го уровня", а потом нажалась "Казарма".
Func _LinksClick($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
_IELoadWait($oFrame)
EndFunc
;~ ...
_Login("http://voyna-plemyon.ru", "kiprida", "159357", "Мир 1")
_LinksClick("main", "Ратуша")
_LinksClick("main", "Достроить до 5-го уровня")
_LinksClick("main", "Казарма")
;~ ...
Это уже будет выглядеть как накрутка, и будет не честно по отношению к сообществу. Вашего спасибо вполне достаточноB1ad3 сказал(а):P.S. За помощь, оказаную мне, Ваша репутация будет рости каждый день;)
#include <IE.au3>
Global $oIE
_Login("http://voyna-plemyon.ru", "kiprida", "159357", "Мир 1")
_LinksClick("main", "Ратуша")
_LinksClick2("main", "Достроить до 5-го уровня")
_LinksClick3("menu nowrap", "Обзор деревень")
; ~~~~~~~~~~~~~
; Functions
; ~~~~~~~~~~~~~
Func _Login($sURL, $sLogin, $sPass, $sWorld)
$oIE = _IECreate ($sURL)
$oLogin = _IEGetObjById($oIE, "user")
$oPass = _IEGetObjById($oIE, "password")
_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, "Вход") Then
_IEAction($oLink, "click")
EndIf
Next
; Listener
While _SelectWorld($sWorld)
Sleep(100)
WEnd
_IELoadWait($oIE)
EndFunc
Func _SelectWorld($sWorld)
$oWorlds = _IELinkGetCollection($oIE)
For $oWorld in $oWorlds
$sWorldText = _IEPropertyGet($oWorld, "innerText")
If StringInStr($sWorldText, $sWorld) Then
_IEAction($oWorld, "click")
Return 0
EndIf
Next
Return 1
EndFunc
Func _LinksClick($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
_IELoadWait($oFrame)
EndFunc
Func _LinksClick2($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
_IELoadWait($oFrame)
EndFunc
Func _LinksClick3($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
_IELoadWait($oFrame)
EndFunc
#include <IE.au3>
Global $oIE
_Login("http://voyna-plemyon.ru", "kiprida", "159357", "Мир 1")
_LinksClick("main", "Ратуша")
_LinksClick("main", "Достроить до 5-го уровня")
_LinksClick("menu nowrap", "Обзор деревень")
; ~~~~~~~~~~~~~
; Functions
; ~~~~~~~~~~~~~
Func _Login($sURL, $sLogin, $sPass, $sWorld)
$oIE = _IECreate ($sURL)
$oLogin = _IEGetObjById($oIE, "user")
$oPass = _IEGetObjById($oIE, "password")
_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, "Вход") Then
_IEAction($oLink, "click")
EndIf
Next
; Listener
While _SelectWorld($sWorld)
Sleep(100)
WEnd
_IELoadWait($oIE)
EndFunc
Func _SelectWorld($sWorld)
$oWorlds = _IELinkGetCollection($oIE)
For $oWorld in $oWorlds
$sWorldText = _IEPropertyGet($oWorld, "innerText")
If StringInStr($sWorldText, $sWorld) Then
_IEAction($oWorld, "click")
Return 0
EndIf
Next
Return 1
EndFunc
Func _LinksClick($sFrame, $sText)
$oFrame = _IEFrameGetObjByName($oIE, $sFrame)
$oLinks = _IELinkGetCollection($oFrame)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sText) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
_IELoadWait($oFrame)
EndFunc
_LinksClick("menu nowrap", "Обзор деревень")