Что нового

Нажать на кнопку без ID

filautdinov

Знающий
Сообщения
96
Репутация
9
Приветствую не могу сделать нажатие на кнопку пробывал кучу примеров с форума. Ни одним методом не могу жмакнуть на нее. Подскажите в какую сторону копать

Код кнопки:
Код:
<div class="bUIButton__eShine "><div class="bUIButton__eLabel"><span data-text="Вход"> Вход</span></div><i class="bUISpinner jsUISpinner bUISpinner__mColor_White bUIButton__eLoading"><i class="bUISpinner__eImage"></i></i></div>
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
Ссылка кнопки
https://ru.4game.com/pointblank/play/?popupWidget=AuthPopupWidget
Уже 2 часа сижу так и не могу сделать нажатие на кнопку вход. Гляное в поля данные могу ввести а вот на кнопку нет. Раньше по ид жмакал ее но после обновления когда вводишь данные логин пароль дынные кнопки меняются и про ид уже не нажать. Подскажите как это исправить
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
filautdinov,
Вы бы показали свои попытки.
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
пробывал так:
Код:
$oLinks=_IETagNameGetCollection($oIE, 'div')
For $oLink In $oLinks
    If StringInStr($oLink.getAttribute('span'), ' Вход') Then
        _IEAction($oLink, 'click')
        ExitLoop
    EndIf
Next

Код:
$oButtons = _IETagNameGetCollection($oIE, 'div')
For $oButton In $oButtons
     If $oButton.innertext = " Вход" Then
            $oButton.Click()
            ConsoleWrite("Find")
            ExitLoop
     EndIf
Next

Код:
$oButtons = _IETagNameGetCollection($oIE, "div")
	For $oButton In $oButtons
	If $oButton.classname == "bUIButton__eShine " Then
	  _IEAction($oButton, "click")

	 
	  EndIf
	Next

и еще десятками примеров с форума
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Код:
$oSpans=_IETagNameGetCollection($oIE, 'span')
For $oSpan In $oSpans
    If StringInStr($oSpan.getAttribute('data-text'), 'Вход') Then
        _IEAction($oSpan, 'click')
        ExitLoop
    EndIf
Next
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
alex33 сказал(а):
Код:
$oSpans=_IETagNameGetCollection($oIE, 'span')
For $oSpan In $oSpans
    If StringInStr($oSpan.getAttribute('data-text'), 'Вход') Then
        _IEAction($oSpan, 'click')
        ExitLoop
    EndIf
Next
Таким методом тож не получается, я уже столько разных способов перепробывал и не получается. Как так то, должен же быть способ только я не могу сообразить не хвататет знаний
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Ну, примерно так

Код:
$login = "filautdinov"
$pass = "12345"
$oIE = _IECreate("http://autoit-script.ru")
$oForm = _IEGetObjById($oIE, "guest_form")
$iLogin = _IEFormElementGetObjByName($oForm, "user")
_IEFormElementSetValue($iLogin, $login)
$iPass = _IEFormElementGetObjByName($oForm, "password")
_IEFormElementSetValue($iPass, $pass)
_IEFormSubmit($oForm)


С работы не хожу по игровым сайтам, так что проверить не могу.
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
Пробывал так:
Код:
$sLogin =_IEGetObjById($oIE,"AuthFormLogin")
$sPassw =_IEGetObjById($oIE,"AuthFormPassword")

_IEFormElementSetValue ($sLogin, "user")
_IEFormElementSetValue ($sPassw, "123456")

$oForm = _IEGetObjById($oIE, "AuthPopupWidget__eLogin")
_IEFormSubmit($oForm)

Перепробывал все ID с формы ни как не реагирует.
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
C2H5OH сказал(а):
OffTopic:
Учитывая тенденцию сайтов на борьбу с автоматизацией, на большинстве из них в формах регистрации и авторизации, эта команда уже не работает.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
$oIe.document.querySelector('#jsLoginPopupWidget__SignIn').click()
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
edyapd сказал(а):
Учитывая тенденцию сайтов на борьбу с автоматизацией, на большинстве из них в формах регистрации и авторизации, эта команда уже не работает.

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

P.S. inververs меня опередил))
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
inververs сказал(а):
$oIe.document.querySelector('#jsLoginPopupWidget__SignIn').click()
не отработает, в первом посте я отписался что когда вводишь логи пароль данные кнопки меняются соответсвенно #jsLoginPopupWidget__SignIn уже не существует. И нажатие не просиходит. Без ввода данных логин пароль отрабатывает старыя схема. Как еще можно кликнуть? к чему прицепиться?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
А если просто отправить
Код:
ControlSend("[ACTIVE]", "", "", "{Enter}")

Просто сейчас попробовал, вроди по "Enter" отрабатывает запрос на авторизацию.
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
edyapd сказал(а):
А если просто отправить
Код:
ControlSend("[ACTIVE]", "", "", "{Enter}")

Просто сейчас попробовал, вроди по "Enter" отрабатывает запрос на авторизацию.
Нужно средствами IE без наждатий клавиш.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
С первого раза сработало.

Код:
#include <IE.au3>
$oIE = _IECreate("https://ru.4game.com/pointblank/play/?popupWidget=AuthPopupWidget")
$oButton = _IEGetObjById($oIE, "jsLoginPopupWidget__SignIn")
_IEAction($oButton, 'click')
 
Автор
F

filautdinov

Знающий
Сообщения
96
Репутация
9
C2H5OH сказал(а):
С первого раза сработало.
Код:
#include <IE.au3>
$oIE = _IECreate("https://ru.4game.com/pointblank/play/?popupWidget=AuthPopupWidget")
$oButton = _IEGetObjById($oIE, "jsLoginPopupWidget__SignIn")
_IEAction($oButton, 'click')
Заполни поля логин пароль и поробуй, не сработает. Я же уже отписался сообщением ранее что после заполнения полей данные кнопки меняются id jsLoginPopupWidget__SignIn становиться не доступным потому данным методом нажать кнопку не является возможным.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
filautdinov [?]
Как еще можно кликнуть?
При помощи UIAutomate. Проверял на Win7 x86, IE10. Может работать в свёрнутом окне.

Код:
#include "UIAutomate.au3"
#include <IE.au3>
$oIE = _IECreate("https://ru.4game.com/pointblank/play/?popupWidget=AuthPopupWidget")
$oParent = _UIA_GetElementFromHandle(ControlGetHandle("[class:IEFrame]", "","Internet Explorer_Server1"))
$oLogin = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "AuthFormLogin", "AutomationId")
_UIA_ElementTextSetValue($oLogin, "user")
$oPassword = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "AuthFormPassword", "AutomationId")
_UIA_ElementTextSetValue($oPassword, "123456")
_UIA_ElementSetFocus($oLogin)
_UIA_ElementSetFocus($oPassword)
$oButton = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Вход")
_UIA_ElementDoDefaulAction($oButton)
 
Верх