Автоматический ввод логина и пароля на сайте

  • 30.09.2019
  • 1 517
  • 2
  • 100.00%
  • 1
  • 28.11.2019
Автоматический ввод логина и пароля на сайте

На своей основной работе довольно часто приходилось сталкиваться с таким явлением, как необходимость автоматического ввода и пароля на каком-либо сайте, причем через конкретный браузер (чаще всего - Internet Explorer), причем на этом сайте категорически отказывает сохранять логин и пароль. К счастью, с помощью инструментов Selenium и скриптового языка PowerShell можно значительно упростить жизнь себе и другим людям.


Автоматизация ввода логина и пароля на примере Internet Explorer

В данной статье будет автоматизирована следующая последовательность действий (которая не будет требовать никакого участия пользователя):

  • Автоматизированный заход на нужный сайт через определенный браузер;
  • Ввод имени пользователя и пароля;
  • Нажатие заданной кнопки входа (авторизации).

Сейчас будет рассмотрен вариант с использованием Internet Explorer, далее будет описана адаптация под другие браузеры.

  1. Сперва нужно получить дистрибутив Selenium. Для этого нужно перейти на его официальный сайт - https://www.seleniumhq.org/download/, и в секции Selenium Client & WebDriver Language Bindings скачать последнюю версию под C#. На текущий момент актуальная стабильная версия 3.14.0, на её примере дальше и будет идти речь.
  2. Открываем скачанный архив любым архиватором, и пытаемся им же открыть файл Selenium.WebDriver.3.14.0.nupkg. Если же он не открывается, то дописываем к концу nupkg файла расширение .zip. Теперь этот файл можно открыть любым архиватором.
  3. Открываем, переходим в папку lib, а в ней в папку net35. Распаковываем файл "WebDriver.dll" в любое надежное для хранения место. Пусть это будет C:\Selenium.
  4. На все том же сайте, в загрузках, находим секцию The Internet Explorer Driver Server, и скачиваем 32-битный вариант Internet Explorer Driver Server. Единственный exe из архива следует поместить по тому же адресу, что и "WebDriver.dll" - в папку C:\Selenium.
  5. Открываем встроенный в Windows редактор PowerShell - PowerShell (ISE). Найти его можно через меню "Пуск", набрав его название в поиске.

    Запускаем программу, нажимаем кнопку "Создать", и вносим туда следующие строки:

    Add-Type -Path "C:\Selenium\WebDriver.dll"
    $env:PATH += ";C:\Selenium"
    $browser = New-Object OpenQA.Selenium.IE.InternetExplorerDriver
    
    $browser.Navigate().GoToURL("http://192.168.1.2")
    $InputUser = $browser.FindElementById("userName")
    $InputUser.clear();
    $InputUser.SendKeys("user123")
    $PasswordUser = $browser.FindElementById("pwd")
    $PasswordUser.clear();
    $PasswordUser.SendKeys("password123")
    $LoginButton = $browser.FindElementById("loginBtn")
    $LoginButton.Click()
    
    Stop-Process -Name "IEDriverServer" -Force
  6. Теперь внесем в него необходимые правки. Зеленым цветом отмечены:
    • http://192.168.1.2 - адрес сайта, который нужно открыть в Internet Explorer'e.
    • user123 - имя пользователя.
    • password123 - пароль

    Красным цветом обозначены идентификаторы элементов HTML, которые являются полями для ввода нужных текстовых значений (за исключением третьего):

    • userName - идентификатор поля ввода имени пользователя.
    • pwd - идентификатор поля ввода пароля.
    • loginBtn - идентификатор кнопки логина.

    Узнать идентификатор нужного поля можно с помощью клика на нём правой кнопки мыши и выбора, в зависимости от браузера, пункта просмотра кода элемента:

    • Internet Explorer - Проверить элемент.
    • Google Chrome - Просмотреть код
    • Mozilla Firefox - Исследовать элемент.

    По выбору нужного пункта откроется панель с содержимым HTML кода. Выглядеть этот код будет примерно так:

    <input type="text" class="logining-input" id="userName" onkeypress="CheckInfo()" maxlength="31" onclick="JavaScript:this.value=''" onfocus="this.select();" placeholder=""> 

    Соответственно, из всего этого нужно взять значение id, и использовать его в скрипте PowerShell. Сохраним данный скрипт в папке C:\Selenium, и назовем Browser.ps1.

  7. Теперь можно проверить работу написанного скрипта, с помощью клавиши F5, или зеленой кнопки на панели инструментов. Если все было сделано верно, произойдет следующее:
    1. Откроется браузер Internet Explorer;
    2. Введутся нужные логин, пароль;
    3. Нажмется кнопка входа.
  8. Если же этого не произошло, нужно определить на каком моменте перестал выполнятся скрипт, и проверить консоль PowerShell (ISE) на наличие ошибок.

  9. Для упрощения запуска скрипта, можно создать ярлык:
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noLogo -ExecutionPolicy unrestricted -file "C:\Selenium\Browser.ps1"

Вариант для Google Chrome

Как и говорилось в начале статьи, после примера с Internet Explorer'ом, дальше будут рассмотрены варианты с другими браузерами. Логично начать с Google Chrome, который как-никак самый популярный браузер последнего десятилетия.

Принцип работы с Google Chrome ничем не отличается от взаимодействия с Internet Explorer - нужно скачать специальный "драйвер" под нужную версию Google Chrome. Взять его можно со следующей страницы: https://sites.google.com/a/chromium.org/chromedriver/downloads.

Внутри архива будет находится файл chromedriver.exe, который нужно распаковать в директорию C:\Selenium. Далее, меняем всего одну строчку (за номером 3) в скрипте:

$browser = New-Object "OpenQA.Selenium.Chrome.ChromeDriver"

И последнюю:

Stop-Process -Name "ChromeDriver" -Force

Другие браузеры

Конечно же, только Internet Explorer и Google Chrome возможности Selenium не ограничены - различными разработчиками созданы "драйвера" для самых разных браузеров, от Mozilla Firefox, до Safari. Надеюсь, что документации к ним, и двух примеров выше, будет достаточно, чтобы понять как их использовать с другими поддерживаемыми браузерами.

Была ли эта статья Вам полезна?




Комментарии:

    • Александр

    Recluse, скрипт срабатывает и направляет на основную страницу сайта. Данные, то есть логин и пароль автоматически не вводятся. В чем может быть дело?

      • Recluse

      Скорее всего неверно указаны ID нужных полей для заполнения.

Добавить комментарий

Ваш адрес email не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.