Что нового

[Автоматизация] В браузерной игре не получается нажимать кнопки и выбирать объекты

sevis

Новичок
Сообщения
15
Репутация
0
Добрый день.

Перерыл весь форум, пробовал разные методы и способы из библиотеки IE.AU3, но у меня так и не получается сделать следующее:

Есть браузерная онлайн игра.

Игра в режиме реального времени с 24 часовой временной шкалой как и в реальной жизни. Поэтому важно делать определенный действия в определенное время. Например, необходимо в 23:00 запустить постройку здания, или отправить героя на разведку.

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


Но возникла следующая проблема: у меня никак не получается получить доступ к объектам на этой странице. В основном на все эти объекты, в том числе игровые кнопки, можно либо нажимать, либо выбирать их, делая объект активным.

Описание проблемы ниже:

Во-первых, если в DebugBar навести прицел на объект, то почему-то не всегда показывается код, относящийся к этому объекту.

Например, на странице есть кнопка с всплывающей подсказкой "Отправить войска в регионе к герою".

Вот ее код, который я нашел по этой подсказке в исходном HTML:

Код:
<div id="HeroModelMoveFromRegion" title="Отправить войска в регионе к герою" class="heroUnitStackActionImage Voffset3 clickable"></div>


В свою очередь этот код находится в строке кода длинной 6000 символов (строка № 852 во вложении) и в которой, насколько я понимаю, зашиты другие подобные кнопки. Исходя из того, что HTML страница очень длинная, прикрепляю ее в качестве вложения.

Во-вторых, на этой же странице есть кнопки, на которые DebugBar реагирует и выдает, например, по наведеню на кнопку "Мой профиль" DebugBar такой код:

Код:
<div class="relativePosition Voffset2">
							<div style='background-position: -840px 0px; width: 40px; height: 40px; background-image: url("http://static5.cdn.ubi.com/u/HOMMK/mightandmagicheroeskingdoms.ubi.com/1.5.0.90-2-MTR/img/css_sprite/SideBar_Shortcuts.gif"); background-repeat: repeat;' id="myProfileImage" class="Hoffset0 Hoffset0R clickable"></div>
							<div id="myProfileText" class="clickable paradigm"><cufon style="width: 27px; height: 8.33px;" class="cufon cufon-canvas" alt="Мой "><canvas style="left: -1px; top: -2px; width: 37px; height: 11px;" height="11" width="37"></canvas><cufontext>Мой </cufontext></cufon><cufon style="width: 46px; height: 8.33px;" class="cufon cufon-canvas" alt="профиль"><canvas style="left: -1px; top: -2px; width: 54px; height: 11px;" height="11" width="54"></canvas><cufontext>профиль</cufontext></cufon></div>
						</div>


В исходном HTML этот код выглядит так:

Код:
<div class="relativePosition Voffset2">
	<div id="myProfileImage" class="Hoffset0 Hoffset0R clickable" title="Мой профиль"></div>
	<div id="myProfileText" class="clickable paradigm">Мой профиль</div>
</div>

Как получить доступ к таким объектам? Как можно с помощью Autoit нажимать и выбирать подобные объекты? Подскажите хотя бы в каком направлении копать, если возможно автоматизировать эту игру.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
sevis [?]
Как получить доступ к таким объектам? Как можно с помощью Autoit нажимать и выбирать подобные объекты?
Код:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
WinActivate("Меч и Магия: Герои. Королевства")
$oIE = _IEAttach("Меч и Магия: Герои. Королевства")
$oDivs = _IETagNameGetCollection ($oIE, "div")
$myProfile = $oDivs("myProfileImage") ; Мой профиль
_IEAction($myProfile, "click")


Подскажите хотя бы в каком направлении копать
В направление справки по IE.au3
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
В направление справки по IE.au3

Если бы было все так просто... но приведенный вами код не работает, я нечто подобное уже пробовал.

Вы только добавили сделать окно активыным, а у меня просто использовался _IEAttach, но нажатие на кнопку "Мой профиль" и при активном окне все равно не происходит. На странице с игрой визуально ничего не просходит после запуска указанного кода.

Кстати эта кнопка стостоит из двух частей (но нажимать можно на любой элемент):

1. Из картинки
2. Из подписи "Мой профиль" под ней.

Так же если пробовать кликнуть по тексту, используя код ниже, то тоже ничего не получается:

Код:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
WinActivate("Меч и Магия: Герои. Королевства")
$oIE = _IEAttach("Меч и Магия: Герои. Королевства")
$oDivs = _IETagNameGetCollection ($oIE, "div")
$myProfile = $oDivs("myProfileText") ; Мой профиль
_IEAction($myProfile, "click")

Как еще можно попробовать нажать на эту кнопку?
 

Arei

Скриптер
Сообщения
938
Репутация
115
OffTopic:
это должно быть скрыто, или перемещение мыши может быть?
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
OffTopic это должно быть скрыто, или перемещение мыши может быть?

В идеальном варианте, лучше было бы чтобы все манипуляции можно было проводить и при свернутом окне, но для начала можно сделать так, чтобы были перемещения мыши и окно было активным... вот только не хочется привязываться к координатам и цветам, так как это намного менее надежно, чем если привязываться к ID или именам объектов.
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
Всё действительно просто, код рабочий.

В общем код оказался действительно рабочим. Попробовал запустить код на другой машине и там кнопка действительно нажимается. И там то же стоит IE9 и Windows7.

Тогда вопрос почему же на этой машине при той же конфигурации кнопка не нажимается?

Хотя скрипт начинает нормально работать, так ак он активирует окно IE с игрой, а так же считывает объект из активного окна и его свойства, но при этом клика не происходит, почему?

Машину перезагрузил, но это не помогло....


В чем может быть проблема? Почему, код указанный ниже на одной машине с Window7 и IE9 полностью работает, а на другой машине так же с Windows 7 и IE9 работает частично, так как клика не просиходит:

Код:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
WinActivate("Меч и Магия: Герои. Королевства")
$oIE = _IEAttach("Меч и Магия: Герои. Королевства")
$oDivs = _IETagNameGetCollection ($oIE, "div")
$myProfile = $oDivs("myProfileImage") ; Мой профиль
_IEAction($myProfile, "click")
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
sevis [?]
Тогда вопрос почему же на этой машине при той же конфигурации кнопка не нажимается?
Хороший вопрос :smile:
Попробуйте с проверкой, посмотрите что "скажет" скрипт в консоль.
Код:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)

WinActivate("Меч и Магия: Герои. Королевства")

$oIE = _IEAttach("Меч и Магия: Герои. Королевства")
$oDivs = _IETagNameGetCollection ($oIE, "div")
$myProfile = $oDivs("myProfileText") ; Мой профиль

If IsObj($myProfile) Then
	ConsoleWrite("Success: " & _IEPropertyGet($myProfile, "innerText") & @CRLF)
	If _IEAction($myProfile, "click") Then
		ConsoleWrite("Success: click" & @CRLF)
	Else
		ConsoleWrite("Failure: click" & @CRLF)
	EndIf
Else
	ConsoleWrite("Failure: getting object" & @CRLF)
EndIf


P.S. Посмотрите, как у вас настроены вкладки. Поэкспериментируйте с настройками.
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
Хороший вопрос
Попробуйте с проверкой, посмотрите что "скажет" скрипт в консоль.

На машине, где не происходит клика вот такие сообщения появляются:

--> IE.au3 V2.4-0 Error from function _IEPropertyGet, $_IEStatus_InvalidObjectType
Success: 0
Success: click


Чем может быть вызвана такая ошибка?

На машине, где клик происходит сообщения выглядят так:

Success: Мой профиль
Success: click


P.S. Посмотрите, как у вас настроены вкладки. Поэкспериментируйте с настройками.

Поэксперементировать с вкладками и настройками чего? Internet Explorer? Да вроде одинаково должно быть, я просто устанавливал и там и там IE9 и никаких настроек не менял.

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

Или может быть радикальную меру применить и просто переустановить IE9 на проблемной машине? Правда я не уверен что это поможет...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
sevis
Что "говорит" в консоль этот скрипт?
Код:
#include <IE.au3>
Opt("WinTitleMatchMode", 2)

WinActivate("Меч и Магия: Герои. Королевства")

$oIE = _IEAttach("Меч и Магия: Герои. Королевства")
$oDivs = _IETagNameGetCollection ($oIE, "div")
$myProfile = $oDivs("myProfileText") ; Мой профиль

If IsObj($myProfile) Then
;~ 	ConsoleWrite("Success: " & _IEPropertyGet($myProfile, "innerText") & @CRLF)
	ConsoleWrite("Success: " & ObjName($myProfile) & @CRLF)
	If _IEAction($myProfile, "click") Then
		ConsoleWrite("Success: click" & @CRLF)
	Else
		ConsoleWrite("Failure: click" & @CRLF)
	EndIf
Else
	ConsoleWrite("Failure: getting object" & @CRLF)
EndIf
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
Что "говорит" в консоль этот скрипт?

Этот скрипт на обоих машинах выдает одно и то же:

Success: DispHTMLDivElement
Success: click


При этом по прежнему на одной машине клик происходит, а на другой нет.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
У вас случаем система, на которой не работает скрипт, не 64?
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
У вас случаем система, на которой не работает скрипт, не 64?

Да именно 64 бита, но и там, где скрипт правильно работает, ОС так же 64 бита.

Поэтому я и не связывал ошибку с разрядностью операционной системы.

Единственная разница, что на одной машине профессиональная редакция (на ней работает), а на другой машине корпоративная редакция (на ней не работает). Но я думаю, что от редакции не должна зависеть эта ошибка.

Версии IE9 одинаковые на обоих машинах, 32-битные...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
sevis
Попробуйте в режиме совместимости, в IE 9 есть такая функция, для просмотра сайтов которые разрабатывались для предыдущих версий IE.
 
Автор
S

sevis

Новичок
Сообщения
15
Репутация
0
Попробуйте в режиме совместимости, в IE 9 есть такая функция, для просмотра сайтов которые разрабатывались для предыдущих версий IE.

Действительно, я только сейчас заметил, что на одной машине страница была загружена в режиме совместимости, а на другой машине в обычном режиме IE9.

После того как установил режим совместимости сразу "клик" прошел. Спасибо.
 
Верх