> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/teoriya-avtomatizirovannogo-testirovaniya/selenium/chto-takoe-selenium-grid.md).

# Что такое Selenium Grid?

### 🔹 Что такое **Selenium Grid**

**Selenium Grid** — это компонент Selenium, который позволяет **запускать тесты параллельно на разных машинах, в разных браузерах и на разных операционных системах**.

Идея в том, что у вас есть:

* **Hub (Центр/Хаб)** — главный сервер, который принимает команды от тестов.
* **Nodes (Узлы)** — машины (или контейнеры), где реально запускаются браузеры.

Тесты подключаются к **Hub**, а тот распределяет их на доступные **Nodes**.

***

### 🔹 Основные возможности Selenium Grid

1. **Параллельный запуск тестов** → экономия времени.
2. **Кросс-браузерность** → можно запускать один и тот же тест сразу в Chrome, Firefox, Edge.
3. **Кросс-платформенность** → один тест можно запустить на Windows, Linux, macOS.
4. **Распределение нагрузки** → тесты выполняются на разных машинах/контейнерах.
5. **Интеграция с CI/CD** → Jenkins, GitLab CI, GitHub Actions и др.

***

### 🔹 Архитектура

* **Hub** — центральная точка управления (например, `http://localhost:4444`).
* **Node** — зарегистрированная у Hub машина/контейнер, где запускаются браузеры.

Например:

* Hub → в Docker контейнере.
* Node Chrome → на Linux.
* Node Firefox → на Windows.

Тесты могут автоматически распределяться: один запускается в Chrome/Linux, другой в Firefox/Windows.

***

### 🔹 Пример использования в Python

```python
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# Указываем, что хотим Chrome
capabilities = DesiredCapabilities.CHROME.copy()

# Подключаемся к Selenium Grid Hub
driver = webdriver.Remote(
    command_executor="http://localhost:4444/wd/hub",
    desired_capabilities=capabilities
)

driver.get("https://google.com")
print(driver.title)

driver.quit()
```

***

### 🔹 Когда использовать Selenium Grid

✅ Если у вас:

* много тестов и их нужно ускорить (параллельный запуск),
* нужны разные браузеры/ОС,
* CI/CD пайплайн с распределёнными тестами.

❌ Не стоит использовать, если:

* у вас мало тестов,
* тесты запускаются только локально и всегда в одном браузере.
