Что нового

Авторизация на сайтах

Сообщения
36
Репутация
-1
madmasles спасибо, проблема оказывается была в 11 версии ie.
 

kiril318

Новичок
Сообщения
8
Репутация
0
Если можно напишите скрипт для lowadi.com логин ty1 пароль 132444
 
Сообщения
36
Репутация
-1
kiril318

Код:
#include <IE.au3>

Local $Login = "ty1", $pass = "132444"

$oIE = _IECreate("http://www.lowadi.com/")

$oLogin = _IEGetObjById($oIE, "authentificationLogin")
_IEDocInsertText($oLogin, $Login)
$oPass = _IEGetObjById($oIE, "authentificationPassword")
_IEDocInsertText($oPass, $pass)
$oAuth = _IEGetObjById($oIE, "connexion-submit")
_IEAction($oAuth, "click")
_IELoadWait($oIE)
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
fyviffitoffo
Код:
_IEDocInsertText($oLogin, $Login)
А чем вас не устроила функция
Код:
_IEFormElementSetValue

Код:
#include <IE.au3>

Local $Login = "ty1", $pass = "132444"

$oIE = _IECreate("http://www.lowadi.com/")

$oLogin = _IEGetObjById($oIE, "authentificationLogin")
_IEFormElementSetValue($oLogin, $Login)
$oPass = _IEGetObjById($oIE, "authentificationPassword")
_IEFormElementSetValue($oPass, $pass)
$oAuth = _IEGetObjById($oIE, "connexion-submit")
_IEAction($oAuth, "click")
_IELoadWait($oIE)
 
Сообщения
36
Репутация
-1
alex33
не знаю, просто пользовался ею раньше. А какая разница?
 

ulan44

Знающий
Сообщения
55
Репутация
8
Камрады подскажите как нажать на хитрую кнопку

Код:
<td id="spMain_iMainMenu_iMainMenu_DXI1_T" onclick="aspxMIClick(event, 'spMain_iMainMenu_iMainMenu', '1')" style="cursor:pointer;text-align:Left;border-right:0px!important;padding-right:4px!important;"><span style="cursor:pointer;">Документы</span></td>

После нажатия кнопки у нее выходит под меню с двумя элементами выбора.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ulan44 [?]
как нажать на хитрую кнопку
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
 

fortages

Новичок
Сообщения
81
Репутация
3
Добрый день! Чтобы не создавать похожую тему, задам вопрос здесь...

Есть код:
Код:
#include <IE.au3>

$sLogin = 'MyUserName'
$sPass = 'MyUserPass'
$sUrl = 'http://www.mysitename.com/login'


$oIE = _IECreate($sUrl)
$oForm   = _IEFormGetObjByName($oIE,"form_login")
$oLogin = _IEGetObjById($oIE, 'username')
$oPass = _IEGetObjByName($oIE, 'password')
$oCheck = _IEGetObjById($oIE, 'rememberMe')
$oButton = _IEGetObjById($oIE, 'loginButton')

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
_IEAction($oCheck, 'click')
_IEAction($oButton, 'click')
_IELoadWait($oIE)

$oInputs = _IETagNameGetCollection ($oForm, 'input')
For $oInput In $oInputs
    If $oInput.type = 'submit' And $oInput.value = 'Вход' Then
        _IEAction($oInput, 'click')
        _IELoadWait($oIE)
        ExitLoop
    EndIf
Next


Суть в чем. Пользователей, которыми должен заходить бот, около десяти.
По этому скрипту отлично все заходит. Но только 1.au3. Если во втором скрипте (2.au3) я указываю другой логин, другой пароль и выполняю его - выдает ошибку
c511b118c86d.png

Эта проблема решается если нажать кнопку "Выход" после первого пользователя и только потом запускать второго пользователя (2.au3).
Подскажите, пожалуйста, как осуществить в скрипте выход пользователя? Как нажать на кнопку "Выход" автоматически? Хочется потом эти операции (вход/выход) закинуть в цикл, чтобы не входить 10ю пользователями вручную, а только запустив скрипт. :-[
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
$oCheck = _IEGetObjById($oIE, 'rememberMe')
; ...
_IEAction($oCheck, 'click')


Суть в чем. Пользователей, которыми должен заходить бот, около десяти.

Шутим, да? Штепсель и Тарапунька...
 

fortages

Новичок
Сообщения
81
Репутация
3
C2H5OH это из-за того, что стоит галочка "Запомнить меня" т.е.
Код:
$oCheck = _IEGetObjById($oIE, 'rememberMe')
в скрипте?
Извините за глупые вопросы, сегодня вообще первый день как узнала про AutoIT, не разбираюсь еще в нем.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
fortages
У вас эта ошибка из за того, что функция $oInputs = _IETagNameGetCollection ($oForm, 'input') не находит на странице тэгов input. В таких ситуациях не нужно сразу использовать цикл For In, т.к он ожидает что ему передали коллекцию объектов или массив.
Сразу после $oInputs = ... добавляете
Код:
If Not IsObj($oInputs) Then
	Msgbox(0,0,'Внимание, дальше код выполнять не нужно, т.к нету inputs.')
	;И здесь делаете либо return из функции, либо exit
Else
	;а вот здесь - дальнейший код по работе с объектом
	For $oInput In $oInputs
		If $oInput.type = 'submit' And $oInput.value = 'Вход' Then
			_IEAction($oInput, 'click')
			_IELoadWait($oIE)
			ExitLoop
		EndIf
	Next
EndIf




Добавлено:
Сообщение автоматически объединено:

Еще вот такое oInput.type = 'submit' или такое $oInput.value = 'Вход' сравнение не верно, вам нужно явно преобразовывать в строку
Правильнее написать так:
Код:
If String($oInput.type) = 'submit' And String($oInput.value) = 'Вход' Then
 

fortages

Новичок
Сообщения
81
Репутация
3
inververs спасибо за подсказку, учту свои ошибки.
После выполнения Вашего кода сообщение с ошибкой пропало. Теперь если не нажать "Выход" и попробовать повторно зайти, то просто появляется сообщение
bcfca1e5494a.png

А ошибки больше нет. :smile:


oesoes сказал(а):
Ну а нажать на выход по id кнопки?
Ищу примеры работы _IEGetObjById. Вернее даже так:
понимаю, что это будет выглядеть
Код:
$oButton = _IEGetObjById($oIE, 'something')
_IEAction($oButton, 'click')
_IELoadWait($oIE)

Но вот значение/параметр something - это что?


Если открыть исходный код страницы и поиском пройтись по слову "id=" или "выход", то находится разве что такое:
Код:
<a class="mainmenu" href="/login?logout=1&amp;tid=236e9b6a801c366879f53044eafcf89f&amp;key=9a11f6" rel="nofollow" id="logout" ><img id="i_icon_mini_logout" src="http://illiweb.com/fa/yellow/icon_mini_logout_en.gif" border="0"  hspace="0" alt="Выход [ fortages ]" title="Выход [ fortages ]" /></a></td></tr></table>


Вот эта строчка tid=236e9b6a801c366879f53044eafcf89f&amp;key=9a11f6 это не то что нужно?
То есть,
Код:
$oButton = _IEGetObjById($oIE, '236e9b6a801c366879f53044eafcf89f')
_IEAction($oButton, 'click')
_IELoadWait($oIE)

Вот так?
Извиняюсь, если спрашиваю что-то глупое...


upd: и для каждого нового пользователя/после нового захода на сайт параметр tid= изменяется...
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
попробуйте выходить так:

Код:
_IEImgClick ($oIE, "http://illiweb.com/fa/yellow/icon_mini_logout_en.gif")

кликнет по картинке
icon_mini_logout_en.gif


или так:

Код:
$oButton = _IEGetObjById($oIE, 'logout')
...
 

fortages

Новичок
Сообщения
81
Репутация
3
oesoes сказал(а):
попробуйте выходить так:

Код:
_IEImgClick ($oIE, "http://illiweb.com/fa/yellow/icon_mini_logout_en.gif")

Огромнейшее Вам спасибо, oesoes! Вы меня просто спасли :huggles: Все получилось, и заходит, и выходит теперь. Ураа))

Если можно, подскажите пожалуйста, если на двух других сайтах тоже нужно сделать подобное (заходить клонами), но на одном из них (по этому же скрипту) получается заполнить поля Логин/Пароль, но кнопка Вход не нажимается. При наведении на нее мышкой в левом нижнем углу браузера пишет такое:
7a79377b092a.png

Поиск в исходном коде страницы по слову "Вход" выдает такое:
Код:
<li class="icon-logout"><a href="./ucp.php?mode=login" title="Вход" accesskey="x">Вход</a></li>
Код:
<input type="submit" name="login" tabindex="6" value="Вход" class="button1" /></dd>
Код:
<form action="./ucp.php?mode=login" method="post" id="login">
    <div id="main_box">
        <div id="top_block">
            <div class="top_left"></div>
            <div class="top_mid">
                <p class="block_title">angraal.org Вход</p>
            </div>

Из этого списка функций (https://www.autoitscript.com/autoit3/docs/libfunctions/IE%20Management.htm) более-менее подходящей кажется _IELinkClickByText (или _IENavigate?)

На втором форуме вообще авторизоваться можно только после нажатия на ссылку "Вход-регистрация", при наведении мышки на которую в углу пишется
706fd7b8209e.png
в это вообще страшно даже лезть пока, это как раз тот случай, когда ID узнают как-то из js?

Подскажите, пожалуйста, в какую сторону смотреть?
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
нужно получить форму с id = "login" функцией $oForm=_IEFormGetObjByName($oIE,'login') заполнить ее и отправить функцией _IEFormSubmit($oForm). Если использовать _IELinkClickByText или _IENavigate POST данные не передадутся. Вообще при таких вопросах приводят ссылку на страничку, где нужно авторизироваться...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322

oesoes

xor eax,eax
Сообщения
171
Репутация
9
madmasles [?]
Посмотрите в IE.au3 функцию __IENavigate().
Не знал ) Это справка меня неверно засправила :whistle: )) Хотя может у меня и не последняя версия справки :-\


Наверное, Вы имели в виду функцию _IEGetObjById()?
Не, я именно про _IEFormGetObjByName(), вроде в манах написано, что по и по id умеет ссылку на форму отдавать, не только по имени... Я что-то пропустил наверное?




Добавлено:
Сообщение автоматически объединено:

Поправил свой предыдущий пост, а то получается не то там передавал, чем мог ввести в заблуждение, извиняюсь. Я там передавал в _IEFormSubmit ссылку на объект самого контекста IE, а надо же на форму ) Скопировал и не доглядел.
 
Верх