> 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/kakaya-raznica-mezhdu-action-i-actions.md).

# Какая разница между Action и Actions?

### 🔹 `Action`

* Это **интерфейс / объект**, который представляет **одно законченное действие** (например, клик, нажатие клавиши, drag\&drop и т.п.).
* В Python он напрямую почти не используется — он скрыт внутри `ActionChains`.
* В Java можно встретить:

  ```java
  Action action = builder.click(element).build();
  action.perform();
  ```

  Здесь `Action` — это **одно действие**, которое можно выполнить через `perform()`.

### 🔹 `Actions` (или `ActionChains` в Python)

* Это **класс-строитель (builder)**, который позволяет создавать **цепочку действий** (несколько `Action` подряд).
* В Python это называется `ActionChains`.

Пример на **Python**:

```python
from selenium.webdriver import ActionChains

actions = ActionChains(driver)
actions.move_to_element(element).click().perform()
```

Здесь:

* `ActionChains` создаёт последовательность действий,
* `.perform()` выполняет их.

### 🔑 Разница в двух словах:

* **`Action`** → одно действие.
* **`Actions` (`ActionChains` в Python)** → контейнер, который комбинирует несколько действий в цепочку и потом выполняет их.

👉 Если ты работаешь на **Python**, то почти всегда используешь **`ActionChains`**, а не `Action`.\
В Java встречаются оба — там `Actions` создаёт `Action`, и его можно выполнить отдельно.
