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

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