# selenium

Задаёт стандарты написания скриптов на Selenium в Python: обязывает использовать Page Object Model, явные ожидания и headless-режим.

- правило · `type=rule` · Cursor · ★ 3580
- Автор: sanjeed5
- Лицензия: CC0-1.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/selenium.mdc
- Обновлён: 2026-05-19
- HTML: https://affpapa.org/nevibecode/rules/selenium

## Что делает

Правило подключается к файлам `**/*.py` и заставляет Cursor писать код на Selenium по паттерну Page Object Model (POM). Локаторы и методы страниц выносятся в отдельные классы вроде `BasePage`, отделяясь от логики тестов и парсинга.

В инструкциях прописан строгий запрет на `time.sleep()` и неявные ожидания: вместо них генератор применяет `WebDriverWait` и `expected_conditions`. Приоритет в выборе селекторов отдаётся `By.ID` и `By.CSS_SELECTOR`, а хрупкий абсолютный `By.XPATH` исключается.

Для запуска браузера правило настраивает флаги Chrome (`--headless=new`, `--no-sandbox`, `--disable-dev-shm-usage`) и автоматическое управление драйверами через Selenium Manager. Все сценарии оборачиваются в `try...finally` с вызовом `driver.quit()`, потому что забытый процесс Chrome быстро съедает память на сервере.

## Установка

### Cursor (родная платформа)

**Вручную: положить файлы**
- Файл: `.cursor/rules/selenium.mdc` — Во frontmatter: description, globs, alwaysApply

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/selenium.md` — Поле paths во frontmatter ограничивает файлы: globs из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/instructions/selenium.instructions.md` — Поле applyTo задаёт, к каким файлам применять: globs из источника → applyTo

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/selenium.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/selenium.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/selenium.mdc

## Когда брать
- отделить локаторы от сценариев тестов через Page Object Model
- устранить нестабильные падения тестов заменой `time.sleep()` на `WebDriverWait`
- сконфигурировать headless-режим Chrome для CI и Docker-контейнеров
- гарантировать закрытие браузера через `try...finally`

## Примеры запросов агенту
- Напиши парсер для авторизации на сайте через Page Object Model на Python
- Сделай ожидание появления динамической кнопки с помощью WebDriverWait и клик по ней
- Настрой запуск Chrome в headless-режиме с нужными флагами для контейнера

## Похожие
- [selenium-automation](https://affpapa.org/nevibecode/skills/selenium-automation.md) — скилл · 1200 установок
- [selenium-skill](https://affpapa.org/nevibecode/skills/selenium-skill.md) — скилл · 310 установок
- [web-scraping](https://affpapa.org/nevibecode/skills/mindrally-web-scraping.md) — скилл · 4500 установок
- [playwright-best-practices](https://affpapa.org/nevibecode/skills/playwright-best-practices.md) — скилл · 98500 установок
- [playwright-stealth-verify](https://affpapa.org/nevibecode/skills/playwright-stealth-verify.md) — скилл · 102500 установок
- [browser-automation](https://affpapa.org/nevibecode/skills/sickn33-browser-automation.md) — скилл · 6700 установок

Из того же набора: [sanjeed5/awesome-cursor-rules-mdc](https://affpapa.org/nevibecode/by/sanjeed5/awesome-cursor-rules-mdc.md) — 240 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
