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

На своей основной работе довольно часто приходилось сталкиваться с таким явлением, как необходимость автоматического ввода и пароля на каком-либо сайте, причем через конкретный браузер (чаще всего — 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:SeleniumWebDriver.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:WindowsSystem32WindowsPowerShellv1.0powershell.exe -noLogo -ExecutionPolicy unrestricted -file "C:SeleniumBrowser.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. Надеюсь, что документации к ним, и двух примеров выше, будет достаточно, чтобы понять как их использовать с другими поддерживаемыми браузерами.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *