# Для чего используют browser capabilities, arguments и options?

В контексте **автоматизации тестирования веб-приложений** (Selenium, Playwright, WebDriver) **browser capabilities, arguments и options** используются для настройки браузера перед запуском теста.

***

### **1. Browser Capabilities (Возможности браузера)**

* **Что это:** набор свойств и настроек, передаваемых драйверу браузера при запуске.
* **Для чего используют:**
  * Указать браузер и его версию (`browserName`, `browserVersion`).
  * Определить платформу (`platformName`).
  * Включить определённые функции (например, прокси, включение/отключение всплывающих окон).
* **Пример (Selenium, Python):**

```python
from selenium import webdriver
caps = {
    "browserName": "chrome",
    "browserVersion": "114.0",
    "platformName": "Windows 10"
}
driver = webdriver.Remote("http://localhost:4444/wd/hub", capabilities=caps)
```

***

### **2. Browser Arguments**

* **Что это:** отдельные параметры запуска браузера, обычно передаваемые в командной строке.
* **Для чего используют:**
  * Запуск в **headless** режиме (без UI).
  * Отключение уведомлений, GPU, кэша.
  * Задание пользовательского профиля, размера окна, языка.
* **Пример (Chrome, Python):**

```python
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless")
options.add_argument("--disable-notifications")
driver = webdriver.Chrome(options=options)
```

***

### **3. Browser Options**

* **Что это:** объект/набор методов для передачи **настроек и аргументов** драйверу.
* **Для чего используют:**
  * Объединяет capabilities и arguments в одном объекте.
  * Позволяет гибко настраивать браузер для тестов.
* **Пример:**

```python
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome(options=options)
```

***

#### **4. Отличие и связь**

| Параметр     | Что делает                                      | Пример использования                      |
| ------------ | ----------------------------------------------- | ----------------------------------------- |
| Capabilities | Устанавливает свойства браузера и платформы     | `browserName`, `browserVersion`           |
| Arguments    | Передаёт флаги командной строки для браузера    | `--headless`, `--disable-notifications`   |
| Options      | Объединяет аргументы и дополнительные настройки | `add_argument`, `add_experimental_option` |

***

Итог: **capabilities, arguments и options используются для конфигурирования браузера перед запуском тестов**, чтобы контролировать платформу, поведение браузера и дополнительные функции, такие как headless режим или отключение уведомлений.
