Основы автоматизации с помощью Selenium и Python

Selenium – это мощный инструмент, который позволяет автоматизировать повторяющиеся задачи и может использоваться для веб-скрейпинга. Если вы программист, тестировщик или просто бизнесмен, знание Selenium и Python может оказаться очень полезным для решения повседневных задач и сэкономит вам много времени.

Это статья для начинающих. Если вы ничего не знаете о Selenium или даже о Python, не волнуйтесь, мы упростили эту статью таким образом, чтобы каждый мог легко понять, о чем речь, и использовать новые знания на практике.

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Что мы будем делать?

Итак, давайте разберемся, о чем пойдет речь в этой статье:

  1. Как установить и настроить Python, Selenium и Chromedriver на вашем компьютере.
  2. Основы Selenium.
  3. Как автоматизировать работу с веб-сайтами. Мы будем входить на произвольный веб-сайт с заранее определенными учетными данными, получать некоторые данные после входа, например, зарегистрированное имя пользователя, и выходить из учетной записи.

Требования

Есть несколько инструментов, которые необходимо иметь перед началом работы над кодом.

1. Python. Убедитесь, что в вашей системе установлен Python. Для этого вы можете просто зайти в командную строку или терминал и набрать python --version в Windows, а в Linux/MacOS – python -version. Если он еще не установлен, то вот ссылка, перейдя по которой можно скачать и установить Python на ваш компьютер: скачать Python на Python.org.

2. Selenium. После установки Python нужно установить библиотеку Selenium, которая поможет нам выполнять автоматизацию. Библиотека – это уже написанный код или инструмент, который мы можем использовать. Так, в библиотеке Selenium есть несколько готовых функций, которые помогут нам взаимодействовать с веб-браузерами и отправлять команды.

Команда для установки: pip install selenium

Это позволит установить Selenium в вашу систему локально.

3. Chromedriver. WebDriver – это инструмент с открытым исходным кодом для автоматизированного тестирования веб-приложений во многих браузерах. Chromedriver предоставляет нам среду или браузер, которым мы можем управлять с помощью нашего скрипта для посещения веб-страниц.

Ссылка на скачивание: ChromeDriver – WebDriver для Chrome (chromium.org).

Теперь нам нужно настроить код.

Важно! Убедитесь, что версия драйвера Chromedriver и браузера Chrome, установленного в вашей системе, совпадают. В противном случае могут возникнуть ошибки.

Настройка кода

1. Создайте одну папку, в которой будет храниться наш код. В эту папку добавьте chromedriver.exe. После скачивания вы, вероятно, получите zip-файл. Для доступа к файлу .exe распакуйте этот zip-архив.

2. Теперь создайте Python-файл. В нашем примере он будет называться test.py.

Итак, наша папка selenium будет выглядеть следующим образом:

Selenium папка

Кодинг

Сначала нужно импортировать необходимые нам библиотеки. Для этого следует добавить приведенный ниже код в файл test.py:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

Все эти библиотеки Selenium содержат различные функции, которые нам понадобятся.

Первый импорт webdriver необходим для взаимодействия с веб-браузером: установления соединения и управления им.

Функция / класс webDriverWait позволяет добавлять время ожидания в наши операции. Иногда при автоматизации различных действий нужно ждать ответа сервера и полной загрузки веб-страницы. Функции  wait помогают добавить неявное и явное ожидание. Если, допустим, у вас есть сайт, генерирующий комбинации строк или имен, когда вы вводите слово, вам приходится дожидаться, пока веб-страница загрузит сгенерированные данные.

Функции By и EC позволяют легко выбирать веб-элементы, такие как поля ввода, кнопки, текст и т.д., с помощью их свойств Xpath или CSS.

Options предоставляет дополнительные опции для нашего веб-драйвера. Chrome может работать в обычном или headless (безголовом) режиме. В режиме headless наш код будет посещать сайты и собирать данные, но мы не будем видеть сам процесс. Мы получим уже готовые данные/результат. По умолчанию headless-режим отключен.

Теперь перейдем к следующему коду.

options = webdriver.ChromeOptions()
# options.add_argument('--headless')
options.add_experimental_option('excludeSwitches', ['enable-logging'])
web = webdriver.Chrome(options=options,executable_path='chromedriver.exe')

Здесь строка включения headless-режима # options.add_argument('--headless') неактивна (перед ней стоит символ #). Поэтому мы сможем увидеть на экране, что будет происходить в браузере во время теста.

Сфокусируемся на последней строке кода. web — это наш объект, который хранит свойства Chromedriver. Теперь мы будем запускать все наши функции с этим объектом.

Шаг 1: Запуск браузера и посещение сайта

Итак, давайте разберем посещение сайта с помощью Selenium на примере веб-страницы Login / Sign Up (000webhostapp.com).

Скопируйте ссылку на сайт и создайте get-запрос:

web.get("https://osmphp.000webhostapp.com/views/login.php");

Теперь запустите код. Команда get должна открыть браузер и показать страницу входа в систему:

Страница входа в систему

Поздравляем! Вы только что успешно открыли браузер и посетили сайт с помощью кода Selenium. Это означает, что вы все правильно установили и настроили.

Шаг 2: Авторизация на сайте

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

Что касается авторизации, вы можете использовать следующие учетные данные для тестирования:

  • email: johndoe@gmail.com
  • пароль: 123123.
Выбор элемента на странице с помощью XPath
Inspect Login Page

Мы должны ввести данные для входа в систему в соответствующие поля ввода. Для этого нам нужно выбрать эти поля ввода и передать входные данные через код.

Чтобы добиться этого, нам нужно уникальным образом идентифицировать HTML-элементы на веб-странице. Идентификация элементов может осуществляться с помощью JS path, CSS ID, Xpath. Все они немного похожи, но мы разберем, как найти элемент с помощью Xpath.

Итак, чтобы выбрать нужный элемент, скопируйте Xpath для поля ввода адреса электронной почты и аналогично — для пароля, как показано на скриншоте выше.

try:
    # create a field object
    email = WebDriverWait(web, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/form/div[1]/input")))
    # click on it to enable the input field
    email.click()
    # insert the input using send_keys function
    email.send_keys("johndoe@gmail.com")

except:
  pass

Код хорошо прокомментирован, но все же давайте поподробнее рассмотрим процесс.

Для того чтобы автоматизировать ввод каких-либо данных в конкретные поля, необходимо выполнить 3 основных шага:

1. Идентифицировать поле ввода на веб-странице с помощью XPath. Приведенный ниже код выполняет работу по выбору поля ввода:

email = WebDriverWait(web, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/form/div[1]/input")))

2. Нажать / выбрать элемент для ввода данных — для этого служит метод click.

3. Отправить в выбранный элемент значение, переданное в двойных кавычках, с помощью функции send_keys("inputvalue").

Аналогичным образом выберите поле ввода пароля и кнопку “Login” с помощью Xpath. Для кнопки используйте только метод click.

После этого вы войдете на сайт. Полный код можно найти на GitHub. Там же вы найдете описание процесса выхода из системы.

Видео процесса автоматизации Selenium

Перевод статьи «Automation Basics with Selenium and Python».

Оставьте комментарий

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