# Что такое 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 пайплайн с распределёнными тестами.

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/teoriya-avtomatizirovannogo-testirovaniya/selenium/chto-takoe-selenium-grid.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
