Что нового

Как в mail.ru ввести Логин, Пароль и нажать кнопку "Войти"

Visors

Новичок
Сообщения
58
Репутация
0
Здравствуйте. Есть такая проблема, насчет веб-страницы.
Браузер InternetExplorer.
Сайт mail.ru
Как скриптом - открыть эту программу и вбить Логин и Пароль в этой странице... и нажать кнопку "Войти" ?
(Логин - Visors, пароль 12345)

Дело в том, что AutoitInfo - не показывает никаких элементов конкретной страницы. Из-за этого - сложно разобраться - как работать с веб-страницей.

Нашел такой код, но он не работает.
Код:
#include <IE.au3>

$sLogin = 'Visors'
$sPass = '12345'
$sUrl = 'http://mail.ru/'

$oIE = _IECreate($sUrl)
$oLogin = _IEGetObjById($oIE, 'mailbox__login')
$oPass = _IEGetObjByName($oIE, 'password')
$oCheck = _IEGetObjById($oIE, 'mailbox__anothers')
$oButton = _IEGetObjById($oIE, 'mailbox__submit__button')

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

;_IELinkClickByIndex ($oIE, 'mfAva_0')
;_IELinkClickByText ($oIE, "Новый Год в Argo!")
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "Новый Год в Argo!")
    If StringInStr($sLinkText, $sMyString) Then
        _IEAction($oLink, "click")
        ExitLoop
    EndIf
Next
Выдает ошибку:
 

Вложения

  • 22,5 КБ Просмотры: 16

gunter123

Продвинутый
Сообщения
127
Репутация
51
Код:
#include <IE.au3>

$sLogin = 'Visors'
$sPass = '12345'
$sUrl = 'http://mail.ru/'

$oIE = _IECreate($sUrl)
$oLogin = _IEGetObjById($oIE, 'mailbox:login')          ; Имя элемента поменялось
$oPass = _IEGetObjById($oIE, 'mailbox:password')        ; Тут тоже
$oButton = $oIE.document.getElementsByClassName('o-control').item(1)     ; У кнопки вообще имени нету, ищем по названии класса

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
Sleep(100)

_IEAction($oButton, 'focus')
_IEAction($oButton, 'click')
_IELoadWait($oIE)
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Не работает.
Открывает браузер, затем страницу mail.ru.

Дальше ничего не происходит.
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
В консоли пишет следующее:
Код:
>"C:\Program Files (x86)2\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\5\1.au3"    
--> IE.au3 T3.0-2 Warning from function _IEGetObjById, $_IESTATUS_NoMatch (mailbox:login)
--> IE.au3 T3.0-2 Warning from function _IEGetObjById, $_IESTATUS_NoMatch (mailbox:password)
--> IE.au3 T3.0-2 Error from function _IEFormElementSetValue, $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEFormElementSetValue, $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEAction(focus), $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
>Exit code: 0    Time: 1.627
 

gunter123

Продвинутый
Сообщения
127
Репутация
51
Попробуйте вот так:
Код:
#include <IE.au3>

$sLogin = 'Visors'
$sPass = '12345'
$sUrl = 'http://mail.ru/'

$oIE = _IECreate($sUrl)
$oLogin = $oIE.document.getElementsByClassName('input i-no-right-radius i-width-100% mailbox__rwd-control').item(0)
$oPass = $oIE.document.getElementsByClassName('input mailbox__input mailbox__input_password mailbox__rwd-control').item(0)
$oButton = $oIE.document.getElementsByClassName('o-control').item(1)

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPass, $sPass)
Sleep(100)

_IEAction($oButton, 'focus')
_IEAction($oButton, 'click')
_IELoadWait($oIE)
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Теперь консоль выдает такие ошибки:
Код:
>"C:\Program Files (x86)2\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\5\1.au3"    
--> IE.au3 T3.0-2 Error from function _IEFormElementSetValue, $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEFormElementSetValue, $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEAction(focus), $_IESTATUS_InvalidDataType
--> IE.au3 T3.0-2 Error from function _IEAction(click), $_IESTATUS_InvalidDataType
>Exit code: 0    Time: 1.519
 

gunter123

Продвинутый
Сообщения
127
Репутация
51
А теперь что пишет в консоли?
Код:
#include <IE.au3>

$sLogin = 'Visors'
$sPass = '12345'
$sUrl = 'http://mail.ru/'

$oIE = _IECreate($sUrl)
$oForm = _IEFormGetObjByName($oIE, "auth")
$oLogin = _IEFormElementGetObjByName($oForm, "login")
$oPassword = _IEFormElementGetObjByName($oForm, "password")

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPassword, $sPass)

$oButton = $oForm.getElementsByClassName('o-control')
ConsoleWrite("Количество: " & $oButton.length & @CRLF)
For $i = 0 To $oButton.length -1                                     ; Будет нажимать все кнопки o-control по очереди, после каждого нажатия показывает сообщение
   $oButton.item($i).focus()
   $oButton.item($i).click()
   MsgBox(4096, "", "Нажата кнопка #" & $i)
Next
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Сейчас произошло следующее:
Открылся браузер с сайтом и в полях логина и пароля этого сайта - появились записи моих логина и пароля.
Но кнопка "Войти" - не нажалась.

В консоли появилась одна-единственная надпись:
Код:
>"C:\Program Files (x86)2\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\5\1.au3"  
Количество: 0
>Exit code: 0    Time: 1.606
 

gunter123

Продвинутый
Сообщения
127
Репутация
51
Вот еще такой вариант. Если не сработает, скиньте ваш htmlкод кнопки "Войти" на страничке входа (ПКМ - проверить элемент)
Код:
#include <IE.au3>

$sLogin = 'Visors'
$sPass = '12345'
$sUrl = 'http://mail.ru/'

$oIE = _IECreate($sUrl)
$oForm = _IEFormGetObjByName($oIE, "auth")
$oLogin = _IEFormElementGetObjByName($oForm, "login")
$oPassword = _IEFormElementGetObjByName($oForm, "password")

_IEFormElementSetValue($oLogin, $sLogin)
_IEFormElementSetValue($oPassword, $sPass)

$oLinks = _IETagNameGetCollection($oIE, "input")
For $oLink in $oLinks
   $sLinkText = _IEPropertyGet($oLink, "outerhtml")
   If StringInStr($sLinkText, '"Войти"') Then
       _IEAction($oLink, "focus")
       _IEAction($oLink, "click")
       ExitLoop
   EndIf
Next
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Теперь все работает.
Большое спасибо.

У меня только один вопрос:
Как вы определяете названия полей куда нужно вставлять текст ?
Ведь AutoitInfo - не определяет элементы интернет-страницы ?
 

gunter123

Продвинутый
Сообщения
127
Репутация
51
Интернет-страницы это html код, в нем все свойства и описаны. Попробуйте в браузере IE нажать на любой элемент страницы ПКМ -> Проверить элемент.
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
У меня в IE нет такой опции "Проверить элемент".
Есть только опция просмотр "HTML-кода", но эта опция выводит - весь код страницы.

Но вот в GoogleChrome если щелкнуть на элементе ПКМ - то можно выбрать опцию "Просмотр кода элемента".
И выводится кусок кода - с этим элементом.

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

gunter123

Продвинутый
Сообщения
127
Репутация
51
Да, проверяете элемент с помощью Хрома, "цепляетесь" за него, а дальше уже нужные действия
 
Автор
V

Visors

Новичок
Сообщения
58
Репутация
0
Теперь все стало окончательно ясно....
Еще раз спасибо за пояснения.
 
Верх