Учебник по Selenium: как использовать фреймворк для кроссбраузерного тестирования

В веб-разработке в настоящее время совершенно необходимо подготовить приложение к различным размерам дисплеев пользователей или посетителей. Отзывчивый подход предполагает автоматическую адаптацию опубликованного веб-проекта к техническим требованиям соответствующего устройства и зарекомендовал себя как неоспоримое стандартное решение. Не менее важным для современных веб-сайтов, чем высокая гибкость в отношении размера дисплея, является оптимальная совместимость с браузерами: для конечных пользователей не должно быть разницы, заходят ли они на сайт с помощью Firefox, Chrome, Safari или другого веб-клиента.

Поэтому неудивительно, что кроссбраузерное тестирование уже много лет играет важную роль в программировании веб-проектов. Одним из самых популярных инструментов для проведения таких тестов является фреймворк Selenium, выпущенный компанией ThoughtWorks. В этом руководстве мы рассмотрим его подробнее.

Что такое Selenium или Selenium WebDriver?

Для того чтобы оптимизировать процесс разработки приложения на языке Python, Джейсон Хаггинс в 2004 году создал JavaScriptTestRunner — основной элемент фреймворка для веб-тестирования, известного сегодня как Selenium. Первоначально этот инструмент использовался только внутри компании ThoughtWorks, занимающейся разработкой программного обеспечения, в которой Хаггинс работал в то время. После перехода в Google в 2007 году он продолжил разработку программного обеспечения с открытым исходным кодом (лицензия Apache 2.0). После слияния с API WebDriver система тестирования получила свое нынешнее название: Selenium или Selenium WebDriver.

Сегодняшняя версия Selenium основана исключительно на HTML и JavaScript и позволяет разработчикам тестировать и записывать взаимодействия с веб-приложением, а также повторять автоматизированное тестирование так часто, как это необходимо. Ключевыми компонентами, которые делают этот процесс тестирования возможным, являются:

  • Selenium Core: Модуль ядра содержит базовую функциональность фреймворка, включая JavaScriptTestRunner, а также лежащий в основе API команд тестирования.
  • Selenium IDE: Selenium IDE — это среда разработки фреймворка для тестирования, которая служит основой для расширения IDE для Chrome и Firefox, среди прочих функций. Это необходимо для записи и запуска тестов.
  • Selenium WebDriver: WebDriver — это ключевой интерфейс для имитации взаимодействия с пользователем в любом браузере — будь то Firefox, Chrome, Edge, Safari или Internet Explorer. С 2018 года API является официальным стандартом W3C.
  • Selenium Grid: Selenium Grid — это расширение WebDriver или, скорее, его предшественника Selenium Remote Control (RC), которое позволяет запускать тесты одновременно на нескольких серверах. Это позволяет значительно сократить продолжительность тестирования.

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

Где используется Selenium WebDriver?

Selenium является признанным именем в мире тестирования и популярен в качестве базовой основы для различных программ в этом контексте. Самые известные примеры включают сквозной фреймворк Protractor, разработанный специально для тестирования приложений Angular и AngularJS, который использует API WebDriver для имитации взаимодействия с пользователем. Программа автоматизации тестирования Appium, разработанная для нативных и гибридных мобильных приложений, также использует стандартизированный интерфейс для быстрого и удобного выполнения тестов на выбранном языке программирования.

Известный облачный веб-сервис BrowserStack также использует Selenium. Этот сервис разработан в Индии и доступен в виде различных платных пакетов подписки после бесплатной пробной версии. Он использует эту систему тестирования в качестве основы для автоматизированного тестирования настольных и мобильных устройств.

Примечание:

Поскольку Selenium или Selenium WebDriver являются программным обеспечением с открытым исходным кодом, их можно использовать независимо от существующих программ. Благодаря различным компонентам, объединенным в фреймворк, это совсем не проблема — при условии, что у вас есть необходимые навыки.

Учебник по Selenium WebDriver: Как использовать фреймворк для веб-тестов

Любой человек может запускать собственные тестовые случаи с помощью Selenium, не завися от внешнего сервиса или производителя программного обеспечения и не имея специальных навыков программирования. Браузерное тестирование с использованием фреймворка на самом деле разработано так, чтобы было просто писать тестовые сценарии на различных языках — включая JavaScript, Java, C#, Ruby и Python. В следующем руководстве по Selenium мы продемонстрируем, как настроить и использовать фреймворк на примере Python.

Примечание

Следующие шаги этого руководства по Selenium WebDriver требуют установки актуальной версии Python.

Шаг 1: Установите Selenium

Для использования Selenium WebDriver доступны клиенты, а также ряд библиотек. Они известны как языковые привязки и составляют основу фреймворка или процесса тестирования. Однако вам нужно установить клиентские драйверы и библиотеки только для того языка, на котором вы хотите написать сценарий.

В нашем учебнике по Selenium WebDriver нам нужны языковые привязки для Python, которые устанавливаются стандартным образом с помощью менеджера пакетов Python «pip» и следующей команды:

pip install selenium

В качестве альтернативы скачайте исходный пакет по ссылке выше, распакуйте архив tar.gz и используйте файл setup.py для запуска установки. В этом случае необходимая команда будет следующей:

python setup.py install

Далее скачайте и установите драйвер браузера, который должен быть связан с Selenium. Например, для Firefox требуется драйвер «geckodriver»; вы можете найти его официальные выпуски в следующем репозитории GitHub. Полный список драйверов для наиболее распространенных браузеров (Chrome, Edge, Internet Explorer, Safari и т.д.) доступен в официальной документации Selenium.

Примечание

Если вы хотите использовать Selenium через удаленное соединение, вам также потребуется установить серверные компоненты Selenium. Соответствующие установочные пакеты можно найти на официальной странице загрузки фреймворка (в разделе «Selenium Server (Grid)»). Имейте в виду, что для запуска серверного приложения требуется актуальная версия среды выполнения Java (JRE).

Шаг 2: Выберите подходящую среду разработки (IDE)

После того как вы выполнили все условия для использования Selenium WebDriver, вы можете начать писать сценарии тестирования для вашего веб-проекта. Обычно для этого подходит ваш обычный редактор кода. Но в данном случае мы рекомендуем использовать Python IDE (или среду разработки для языка, с которым вы работаете) для достижения максимальной производительности. Известные и популярные решения включают следующие:

  • PyCharm: Python IDE PyCharm доступна в виде бесплатной версии для сообщества с открытым исходным кодом или в виде платной профессиональной версии. Однако вы можете писать скрипты для тестов Selenium с помощью обоих вариантов. Поддерживаются операционные системы Windows, Linux и macOS.
  • PyDev: PyDev — это Python-плагин для среды разработки Eclipse, которая в основном предназначена для разработки Java-приложений. Расширение можно загрузить и установить либо через страницу проекта, либо непосредственно с помощью менеджера обновлений. PyDev и Eclipse работают на всех распространенных системах Windows, macOS и Linux.

Шаг 3: Создание скрипта Python для тестирования браузера (Firefox) с помощью Selenium

Когда желаемое решение готово, можно приступить к написанию отдельных скриптов для автоматизации взаимодействия с браузером — с помощью классов и функций Selenium. В этом учебнике по Selenium мы создадим пример Python-скрипта для Firefox, который автоматически открывает поисковую систему Google в браузере Mozilla, вводит поисковый запрос, а затем анализирует и записывает результаты. В виде кода эти автоматизированные шаги выглядят следующим образом:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# Start Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()

# Open web application
driver.get(“http://www.google.com”)

# Localize textbox
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()

# Enter and confirm search term
search_field.send_keys(“search term”)
search_field.submit()

# Open list of search results shown following the search
# using the method find_elements_by_class_name
lists= driver.find_elements_by_class_name("_Rm")

# Run through all elements and return individual text

i=0
for listitem in lists:
  print (listitem.get_attribute("innerHTML"))
  i=i+1
  if(i>10):
    break

# Close browser window
driver.quit()

Значение отдельных компонентов скрипта представлено в таблице ниже:

Код Значение
from selenium import webdriverfrom selenium.webdriver.common.keys import Keys Сначала загружается модуль WebDriver, чтобы реализовать классы и методы для поддержки различных браузеров. Затем в скрипт загружается настройка виртуальной клавиатуры для имитации ввода с клавиатуры на более позднем этапе.
driver = webdriver.Firefox()driver.implicitly_wait(30)driver.maximize_window() На втором этапе создается экземпляр Firefox, которым впоследствии можно будет управлять с помощью команд Selenium. Для запуска браузера предусмотрен тайм-аут в 30 секунд; окно браузера также должно быть максимизировано.
driver.get(«http://www.google.com») Теперь сценарий открывает страницу поиска Google, которая служит основой для автоматизированного взаимодействия с пользователем.
search_field = driver.find_element_by_id(«lst-ib»)search_field.clear() После открытия поисковой системы скрипт будет искать текстовое поле поиска Google — отмеченное ID-атрибутом «lst-ib». Как только оно будет локализовано, поле поиска сначала очищается с помощью метода: clear().
search_field.send_keys(«search term»)search_field.submit() Текст «search term» вводится и подтверждается с помощью метода: submit().
lists= driver.find_elements_by_class_name(«_Rm») Отдельные результаты поиска впоследствии перечисляются как <a> элементы. Для того чтобы управлять ими с помощью метода find_elements_by_class_name, он вставляется в скрипт на этом этапе.
i=0for listitem in lists: print (listitem.get_attribute(«innerHTML»)) i=i+1 if(i>10): break На последнем активном шаге скрипт возвращает список результатов поиска — ограниченный первыми десятью записями с тегом <a>.
driver.quit() Последняя строка кода закрывает экземпляр браузера.
Примечание

Пример, используемый в этом учебнике по Selenium, наглядно показывает, насколько хорошо фреймворк подходит для браузерного тестирования. Но он также демонстрирует, что Selenium WebDriver является интересным вариантом для веб-скрейпинга с помощью Python, что является еще одной универсальной возможностью использования, предлагаемой testinGoogle Workspace. Более подробную информацию об этом хранилище веб-данных можно найти в нашей статье о веб-скрейпинге.

Selenium WebDriver: подходит не для всех сценариев

Selenium или Selenium WebDriver предлагают первоклассные инструменты для сбора важных данных веб-сайта и моделирования взаимодействия с пользователем. Но фреймворк с открытым исходным кодом подходит не для всех областей применения — как ясно дают понять разработчики в своем списке «худших случаев». К ним относятся следующие случаи или содержимое сайта, которые нельзя тестировать или записывать с помощью Selenium:

  • Каптчи: Известные и широко распространенные капчи были разработаны специально для защиты от ботов и спама и поэтому недоступны для автоматизации процессов с помощью Selenium. Поэтому входные тесты должны быть деактивированы во время тестирования или скраппинга или временно заменены альтернативным элементом.
  • Загрузка файлов: Хотя в экземплярах Selenium можно начать загрузку файлов с помощью имитации нажатия на ссылку, API не отображает ход процесса загрузки.
  • Коды состояния HTTP: Selenium имеет определенные недостатки, когда дело доходит до обработки кодов состояния HTTP. Но эти недостатки могут быть компенсированы использованием дополнительного прокси, если это необходимо.
  • Вход в систему с помощью сторонних сервисов: От платформ социальных сетей и облачных сервисов до учетных записей электронной почты — вход в сторонние провайдеры через сеанс Selenium не рекомендуется. С одной стороны, поставщики этих услуг предлагают свои собственные API для тестирования. С другой стороны, тестирование с помощью фреймворка в этих случаях очень обременительно.
  • Тестирование производительности: Selenium WebDriver не подходит для чистого тестирования производительности, поскольку фреймворк просто не предназначен для этого.

Оцените статью
cdelat.ru
Добавить комментарий