Автоматический ввод логина и пароля на сайте
- Recluse
- 30.09.2019
- 20 596
- 18
- 24.11.2021
- 7
- 7
- 0
На своей основной работе довольно часто приходилось сталкиваться с таким явлением, как необходимость автоматического ввода и пароля на каком-либо сайте, причем через конкретный браузер (чаще всего - Internet Explorer), причем на этом сайте категорически отказывает сохранять логин и пароль. К счастью, с помощью инструментов Selenium и скриптового языка PowerShell можно значительно упростить жизнь себе и другим людям.
Автоматизация ввода логина и пароля на примере Internet Explorer
В данной статье будет автоматизирована следующая последовательность действий (которая не будет требовать никакого участия пользователя):
- Автоматизированный заход на нужный сайт через определенный браузер;
- Ввод имени пользователя и пароля;
- Нажатие заданной кнопки входа (авторизации).
Сейчас будет рассмотрен вариант с использованием Internet Explorer, далее будет описана адаптация под другие браузеры.
- Сперва нужно получить дистрибутив Selenium. Для этого нужно перейти на его официальный сайт - https://www.seleniumhq.org/download/, и в секции Selenium Client & WebDriver Language Bindings скачать последнюю версию под C#. На текущий момент актуальная стабильная версия 3.14.0, на её примере дальше и будет идти речь.
- Открываем скачанный архив любым архиватором, и пытаемся им же открыть файл Selenium.WebDriver.3.14.0.nupkg. Если же он не открывается, то дописываем к концу nupkg файла расширение .zip. Теперь этот файл можно открыть любым архиватором.
- Открываем, переходим в папку lib, а в ней в папку net35. Распаковываем файл "WebDriver.dll" в любое надежное для хранения место. Пусть это будет C:\Selenium.
- На все том же сайте, в загрузках, находим секцию The Internet Explorer Driver Server, и скачиваем 32-битный вариант Internet Explorer Driver Server. Единственный exe из архива следует поместить по тому же адресу, что и "WebDriver.dll" - в папку C:\Selenium.
- Открываем встроенный в 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
- Теперь внесем в него необходимые правки. Зеленым цветом отмечены:
- 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.
- Теперь можно проверить работу написанного скрипта, с помощью клавиши F5, или зеленой кнопки на панели инструментов. Если все было сделано верно, произойдет следующее:
- Откроется браузер Internet Explorer;
- Введутся нужные логин, пароль;
- Нажмется кнопка входа.
- Для упрощения запуска скрипта, можно создать ярлык:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noLogo -ExecutionPolicy unrestricted -file "C:\Selenium\Browser.ps1"
Если же этого не произошло, нужно определить на каком моменте перестал выполнятся скрипт, и проверить консоль PowerShell (ISE) на наличие ошибок.
Вариант для 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. Надеюсь, что документации к ним, и двух примеров выше, будет достаточно, чтобы понять как их использовать с другими поддерживаемыми браузерами.
Добавить комментарий