12/06/2022

Что такое Selenium?

Что такое Selenium?

Что такое Selenium?

Selenium - это инструмент для автоматизированного управления браузерами или драйвер для браузера, специальное ПО которое предназначено для управления браузерами и позволяет другим программам взаимодействовать с браузером.

Selenium специальных средств для тестирования не имеет, он позволяет только управлять браузером.

Что умеет Selenium

Обычно драйвер предоставляет некоторый набор команд, который соответствует некоторым функциям устройства, в нашем случае функциям браузера.

Драйвер может:

  • запускать браузер
  • открывать URL адреса
  • находить ссылки или другие элементы
  • выполнять действия над элементами
  • остановить браузер

Реализации Selenium

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

В рамках проекта Selenium разрабатываются интерфейсы для 5 языков:

  • Java
  • Python
  • Ruby
  • JavaScript
  • C#

Принцип работы

Каждое веб приложение условно можно разделить на 2 части:

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

Браузер и веб сервер взаимодействуют по протоколу HTTP. Браузер отправляет запрос, сервер его обрабатывает и отправляет обратно ответ. Этот ответ содержит информацию, которую браузер использует для визуализации.

Для того, чтобы тестировать серверную часть, браузер не нужен, его можно заменить http клиентом(библиотека которая умеет отправлять запросы по протоколу http и получать ответы), такие клиенты сузествуют для разных языков они не имеют пользовательского интерфейс, только программный(API).

Однако такой способ игнорирует всё, что происходит в браузере (в браузере может быть реализована часть логики плюс сам интерфес становится более динамичным и его тоже нужно тестировать).

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

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

Изначально браузеры не предоставляли такие интерфейсы, кроме IExplorer и в нем работа была реализована изначально таким способом. Но потом появилась возможность взаимодействовать через интерфейсы и с другими браузерами.

Интерфесы которые предоставляют браузеры

Разные браузеры предоставляют разные интерфейсы:

  • Chrome - Remote Debug
  • Firefox - Marionette
  • IE - COM API

Selenium интерфейсы для разных браузеров

Selenium предоставляет единый интерфейс, а сам взаимодействует с браузерами по их интерфейсу:

  • Chrome - chromedriver
  • Firefox - geckodriver
  • IE - IEDriverServer