Автор Тема: Как в mail.ru ввести Логин, Пароль и нажать кнопку "Войти"  (Прочитано 1132 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн Visors [?]

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

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

Нашел такой код, но он не работает.
(нажмите для показа/скрытия)
Выдает ошибку:



Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Январь 25, 2018, 21:08:14 от Visors »

Русское сообщество AutoIt


Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#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)

Is it future or is it past?

Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Не работает.
Открывает браузер, затем страницу mail.ru.

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

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В консоли пишет что-то?

Русское сообщество AutoIt

Re: Как в mail.ru ввести Логин, Пароль и нажать кнопку "Войти"
« Ответ #3 Отправлен: Январь 26, 2018, 12:22:34 »

Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В консоли пишет следующее:
Код: AutoIt [Выделить]
>"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 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Попробуйте вот так:
Код: AutoIt [Выделить]
#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)


Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Теперь консоль выдает такие ошибки:
Код: AutoIt [Выделить]
>"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 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
А теперь что пишет в консоли?
Код: AutoIt [Выделить]
#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


Русское сообщество AutoIt

Re: Как в mail.ru ввести Логин, Пароль и нажать кнопку "Войти"
« Ответ #7 Отправлен: Январь 26, 2018, 12:59:50 »

Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

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

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


Помечен как лучший ответ пользователем Visors Отправлен Январь 26, 2018, 15:14:00

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вот еще такой вариант. Если не сработает, скиньте ваш htmlкод кнопки "Войти" на страничке входа (ПКМ - проверить элемент)
Код: AutoIt [Выделить]
#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


Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Теперь все работает.
Большое спасибо.

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

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Интернет-страницы это html код, в нем все свойства и описаны. Попробуйте в браузере IE нажать на любой элемент страницы ПКМ -> Проверить элемент.
« Последнее редактирование: Январь 27, 2018, 16:48:03 от Garrett »

Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
У меня в IE нет такой опции "Проверить элемент".
Есть только опция просмотр "HTML-кода", но эта опция выводит - весь код страницы.

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

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

Оффлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Да, проверяете элемент с помощью Хрома, "цепляетесь" за него, а дальше уже нужные действия

Оффлайн Visors [?]

  • Новичок
  • *
  • Сообщений: 35

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Теперь все стало окончательно ясно....
Еще раз спасибо за пояснения.

Русское сообщество AutoIt

Re: Как в mail.ru ввести Логин, Пароль и нажать кнопку "Войти"
« Ответ #14 Отправлен: Январь 26, 2018, 15:54:17 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
7001 Просмотров
Последний ответ Октябрь 03, 2009, 19:47:59
от ZanMax
6 Ответов
6742 Просмотров
Последний ответ Июнь 06, 2010, 07:50:39
от Vendor
3 Ответов
2712 Просмотров
Последний ответ Март 16, 2011, 23:35:49
от CreatoR
3 Ответов
3239 Просмотров
Последний ответ Март 11, 2013, 10:09:33
от kvitnitskiy
3 Ответов
2912 Просмотров
Последний ответ Ноябрь 07, 2013, 23:38:18
от teft3lb
0 Ответов
1293 Просмотров
Последний ответ Февраль 28, 2014, 11:29:43
от prokazzza
6 Ответов
2087 Просмотров
Последний ответ Ноябрь 04, 2015, 13:33:40
от Medic84
3 Ответов
1384 Просмотров
Последний ответ Август 23, 2015, 21:39:04
от Yashied
2 Ответов
1234 Просмотров
Последний ответ Октябрь 28, 2015, 11:35:58
от a.i.ivanov