Что нового

[Myst] Авторизация

Alkaris

Новичок
Сообщения
9
Репутация
0
Берусь написать бота для этой игры:
http://www.mist-game.ru/

Сначала нужно пройти авторизацию. С заполнением форм проблем не возникает. Далее вызываем сабмит "Вход". Проблемы начинаются тут. URL не изменился, а вместо полей авторизации сгенерировались ссылки личного кабинета, среди которых нужная - "Играть". Вот что имеется:
Код:
_IELinkClickByText($oIE, 'Играть')

эффекта не дает, т.к. сгенерированной ссылки не находит. по-моему надо обновить $oIE, но после
Код:
_IEAttach(_IEPropertyGet($oIE, "locationurl"), 'url')
ссылку опять не находит. Когда же пытаюсь в тупую перейти без эмуляции кликов
Код:
_IENavigate($oIE, 'http://world.mist-game.ru/game.html')
- ошибка 404. и лишь собственноручно нажав на "Играть" работает как надо, ну или добавив в URL /game.html. Можно ли решить эту задачу без привязки к координатам экрана? Ведь это только начало работы, а в той игре почти все подгружается динамически.
Код:
#include <IE.au3>
$oIE = _IECreate ("http://world.mist-game.ru/")
$pass = 'pass'
$name = 'name'
$oLogn=_IEGetObjById($oIE, "login")
$oPass=_IEGetObjById($oIE, "pass_input")
_IEFormElementSetValue($oLogn, $name)
_IEFormElementSetValue($oPass, $pass)
$oSubmits =  _IETagNameGetCollection($oIE, 'input')
For $oSubmit In $oSubmits
	If $oSubmit.value == 'Вход' Then
		_IEAction($oSubmit, 'click')
		_IELoadWait($oIE) 
		;$oTitle =_IEPropertyGet($oIE, "locationurl")
		_IENavigate($oIE, 'http://world.mist-game.ru/game.html')
		;_IELinkClickByText ($oIE, "Играть")
		;_IEAction($oIE, 'refresh')
		$oIE = _IEAttach(_IEPropertyGet($oIE, "locationurl"), 'url')
		_IENavigate($oIE, 'http://world.mist-game.ru/game.html')
		$oLinks = _IELinkGetCollection ($oIE)
		_IELinkClickByText($oIE, 'Играть')
		For $oLink In $oLinks
			ConsoleWrite($oLink.innertext)
		Next
		ExitLoop
	EndIf
Next
 

gloss

Ленивое кодило
Сообщения
155
Репутация
5
У меня сработало следующее:
Код:
#include <IE.au3>
$oIE = _IECreate ("http://world.mist-game.ru/")
$pass = 'pass'
$name = 'log'
$oLogn=_IEGetObjById($oIE, "login")
$oPass=_IEGetObjById($oIE, "pass_input")
_IEFormElementSetValue($oLogn, $name)
_IEFormElementSetValue($oPass, $pass)
$oSubmits =  _IETagNameGetCollection($oIE, 'input')
For $oSubmit In $oSubmits
    If $oSubmit.value == 'Вход' Then
        _IEAction($oSubmit, 'click')
        _IELoadWait($oIE)
        ;$oTitle =_IEPropertyGet($oIE, "locationurl")
        ;_IENavigate($oIE, 'http://world.mist-game.ru/game.html')
        _IELinkClickByText ($oIE, "Играть")
        ;_IEAction($oIE, 'refresh')
        ;$oIE = _IEAttach(_IEPropertyGet($oIE, "locationurl"), 'url')
       ; _IENavigate($oIE, 'http://world.mist-game.ru/game.html')
        ;$oLinks = _IELinkGetCollection ($oIE)
       ; _IELinkClickByText($oIE, 'Играть')
        ;For $oLink In $oLinks
        ;    ConsoleWrite($oLink.innertext)
        ;Next
        ;ExitLoop
    EndIf
Next
Зашел на сайт, залогинился, нажал кнопку.
 
Автор
A

Alkaris

Новичок
Сообщения
9
Репутация
0
gloss сказал(а):
У меня сработало следующее:
Код:
#include <IE.au3>
$oIE = _IECreate ("http://world.mist-game.ru/")
$pass = 'pass'
$name = 'log'
$oLogn=_IEGetObjById($oIE, "login")
$oPass=_IEGetObjById($oIE, "pass_input")
_IEFormElementSetValue($oLogn, $name)
_IEFormElementSetValue($oPass, $pass)
$oSubmits =  _IETagNameGetCollection($oIE, 'input')
For $oSubmit In $oSubmits
    If $oSubmit.value == 'Вход' Then
        _IEAction($oSubmit, 'click')
        _IELoadWait($oIE)
        ;$oTitle =_IEPropertyGet($oIE, "locationurl")
        ;_IENavigate($oIE, 'http://world.mist-game.ru/game.html')
        _IELinkClickByText ($oIE, "Играть")
        ;_IEAction($oIE, 'refresh')
        ;$oIE = _IEAttach(_IEPropertyGet($oIE, "locationurl"), 'url')
       ; _IENavigate($oIE, 'http://world.mist-game.ru/game.html')
        ;$oLinks = _IELinkGetCollection ($oIE)
       ; _IELinkClickByText($oIE, 'Играть')
        ;For $oLink In $oLinks
        ;    ConsoleWrite($oLink.innertext)
        ;Next
        ;ExitLoop
    EndIf
Next
Зашел на сайт, залогинился, нажал кнопку.
Кнопка "Играть" нажалась скриптом?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Автоит по дефолту использует какой-то из старых IE. Если зайти скриптом на страницу показывающую версию эксплорера, она покажет ту версию которая определяется. Для того чтобы форсированно включить другую версию надо править реестр.
 
Верх