Что нового

Как кликнуть по кнопке из фрейма с защитой

Aragon

Новичок
Сообщения
2
Репутация
0
Здравствуйте!
На сайте браузерной игры пытаюсь нажать кнопку входа, расположенную внутри фрейма. Вот ее код:
Код:
<button class="glagna-mainBtn -blue js-glagna-fastLink" data-id="ru33.waysofhistory.com"></button>
После изучения форума и справки нашел такое решение:
Код:
#include <IE.au3>
$oIE = _IECreate ("https://ru.waysofhistory.com")
$oFrame = _IEGetObjById ($oIE, "frame")
_IENavigate($oIE, $oFrame.src)
Sleep(2000)
$leftNav = $oIE.document.querySelector('[class*="glagna-mainBtn -blue js-glagna-fastLink"]')
_IEAction($leftNav,"click")

Скрипт работает, кнопка нажимается. Но входа в игру не происходит, сайт делает редирект на пустую страницу с каким-то зеленым экраном. Думаю, это защита сайта не дает войти изнутри фрейма после
Код:
_IENavigate($oIE, $oFrame.src)

А без этого не получается найти кнопку. Такой код:
Код:
$oIE = _IECreate ("https://ru.waysofhistory.com")
$oFrame = _IEGetObjById ($oIE, "frame")
$leftNav = $oFrame.document.querySelector('[class*="glagna-mainBtn -blue js-glagna-fastLink"]')
_IEAction($leftNav,"click")

Не работает. Он просто ее не видит.
Код:
$sHTML = _IEBodyReadHTML ($oIE)
$sHTML = _IEBodyReadHTML ($oFrame)

Возвращают только id фрейма и src, а код страницы не видно.
Подскажите пожалуйста, есть ли способ поймать кнопку без перехода по $oFrame.src или как-то по-другому обойти защиту.
 
Автор
A

Aragon

Новичок
Сообщения
2
Репутация
0
Пока придумал такой вариант:
Код:
#include <IE.au3>
$oIE = _IECreate ("https://ru.waysofhistory.com")
$oFrame = _IEGetObjById ($oIE, "frame")
_IENavigate($oIE, $oFrame.src)
_IELoadWait($oIE, 200)
$leftNav = $oIE.document.querySelector('[class*="glagna-mainBtn -blue js-glagna-fastLink"]')
$iScreenX = _IEPropertyGet($leftNav, "screenx")
$iScreenY = _IEPropertyGet($leftNav, "screeny")
MouseMove($iScreenX, $iScreenY)
_IEAction($oIE, "back")
Sleep(2000)
MouseClick ("left")

С главной страницы вход в игру происходит. Но есть 2 существенных минуса. Во-первых, приходится двигать курсор, чего хотелось бы избежать. А во-вторых, в самой игре данные тоже спрятаны в такой фрейм. И этот способ уже не работает, потому что после
Код:
_IENavigate($oIE, $oFrame.src)

тупо выкидывает из игры на главную. Надеюсь кто-нибудь подскажет более правильное решение
 
Верх