# Что такое Electron-based applications? Как использовать Selenium и Appium для их тестирования?

**Electron-based applications** — это десктопные приложения, которые построены на **веб-технологиях** (HTML, CSS, JavaScript) и запускаются внутри Chromium + Node.js. Примеры: **Slack, VS Code, Discord, WhatsApp Desktop**.

Основная идея: приложение работает как веб-страница, но имеет доступ к файловой системе и возможностям ОС через Node.js.

***

### **Особенности тестирования Electron-приложений**

1. **Внутренний веб-контент**

* UI в Electron — это фактически веб-страница.
* Можно использовать **веб-тестовые инструменты** для взаимодействия с DOM.

2. **Доступ к Node.js API**

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

***

### **Использование Selenium**

Selenium можно использовать для **тестирования интерфейса**, потому что Electron основан на Chromium:

1. **Подключение через ChromeDriver**

* Electron-приложения поставляются с **chromedriver**, совместимым с версией Chromium внутри приложения.
* Нужно указать путь к исполняемому файлу Electron.

**Пример (Python, Selenium):**

```python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = "/path/to/electron/app"  # путь к .exe или .app
driver = webdriver.Chrome(service=Service("/path/to/chromedriver"), options=options)

driver.get("http://localhost")  # тестируем Electron UI как веб
```

2. **Взаимодействие с DOM**

* Можно использовать обычные **locators** (`id`, `class`, `xpath`) для кнопок, полей, списков.

***

### **Использование Appium**

Appium позволяет **тестировать Electron-приложения как десктопные приложения**, через специальный драйвер `appium-electron-driver`.

1. **Настройка capabilities:**

```json
{
  "platformName": "electron",
  "app": "/path/to/electron/app",
  "automationName": "electron"
}
```

2. **Возможности Appium для Electron**

* Запуск и управление приложением (open, close, restart).
* Взаимодействие с **UI через селекторы DOM**.
* Можно писать тесты на любом поддерживаемом языке (Python, Java, JS).

3. **Особенности**

* Тесты работают **как с веб-страницей**, но в десктопном окружении.
* Можно автоматизировать не только UI, но и системные взаимодействия через Node.js API (через тестовый код приложения).

***

#### **Итог**

* **Electron apps** — это десктопные приложения на базе Chromium и Node.js.
* **Selenium** подходит для тестирования UI, потому что UI — это веб-страница.
* **Appium** через `appium-electron-driver` позволяет автоматизировать Electron-приложения как десктопные приложения с доступом к DOM и системным функциям.

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


---

# 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/mobile/chto-takoe-electron-based-applications-kak-ispolzovat-selenium-i-appium-dlya-ikh-testirovaniya.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.
