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

  • 721
  • 0
  • 100,00%
  • 3

На своей основной работе довольно часто приходилось сталкиваться с таким явлением, как необходимость автоматического ввода и пароля на каком-либо сайте, причем через конкретный браузер (чаще всего - 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. Надеюсь, что документации к ним, и двух примеров выше, будет достаточно, чтобы понять как их использовать с другими поддерживаемыми браузерами.



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

Ваш e-mail не будет опубликован.

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