Селектор (от англ. selector — «выбирающий») — это элемент синтаксиса, используемый для точного указания и выбора конкретных компонентов в коде, данных или интерфейсе. Термин встречается в контексте веб-разработки, UI/UX-дизайна и автоматизации бизнес-процессов.
Краткое содержание статьи:
Селектор (selector) — это шаблон для точного выбора одного или нескольких элементов из множества по заданному правилу. Другими словами это инструкция, которая говорит системе: «Найди мне именно эти объекты». Например, в веб-разработке селектор — это шаблон для выбора элементов веб‑страницы (отдельных тегов или их групп), чтобы применить к ним стили (в CSS) или выполнить с ними действия (в JavaScript).
В CSS: .button { color: blue; } — селектор .button выбирает все элементы с классом button, чтобы покрасить их в синий.
В SQL: SELECT * FROM users WHERE city='Москва' — часть WHERE city='Москва' является селектором, выбирающим пользователей из Москвы.
В Selenium: //input[@name='email'] — селектор находит поле для ввода email на странице, чтобы ввести в него текст.

Какие задачи решаются с помощью селектора?
1. У вас есть список всех сотрудников компании:
2. Вам нужно найти документы в вашем электронном архиве: все договоры за 2025 год или один документ с определенным номером. Чтобы это сделать, вы составляете инструкцию: «Найти все договоры с периодом подписания с 1 января по 31 декабря 2025» или «Найти документ с кодом Х-123».
Таким образом, селектор — это инструкция для точного поиска, которая указывает программе, компьютеру или движку браузера, с каким конкретным элементом или группой элементов нужно работать. Независимо от контекста его функция — точный выбор нужного элемента из множества.
Селекторы применяются там, где требуется точная выборка: в веб-разработке (CSS, JavaScript), автоматизированном тестировании (Selenium, Playwright), языках запросов (XPath, SQL), обработке данных (регулярные выражения, фильтрация в Excel) и других сферах. Это междисциплинарное понятие.
Селектор в CSS — это правило или шаблон, которое указывает браузеру, к каким именно элементам на веб-странице (например, кнопкам, заголовкам, изображениям) нужно применить определённые стили.
CSS-селекторы отвечают на вопрос: «Какие элементы стилизовать?». Прежде чем задать цвет, размер или отступ, нужно точно указать элемент.
Для автоматизации тестов роботу нужно находить элементы на веб-странице, чтобы кликнуть по ним, ввести текст или считать данные. Селектор здесь — это уникальный идентификатор элемента для робота.
Принцип селективности лежит в основе языков запросов. Например:
Для работы с элементами страницы (DOM) в JavaScript используются методы поиска, куда передаются селекторы.
CSS селекторы — это специальные инструкции или шаблоны, с помощью которых браузер определяет, к каким именно элементам HTML-страницы следует применить заданные стили оформления. Это основа веб-верстки. Разберем их от простого к сложному.
Селектор по тегу (элементу): выбирает все элементы данного типа. Самый широкий охват.
p — выберет все абзацы <p> на странице.
Селектор по классу (class): выбирает элементы с указанным классом. Самый часто используемый и гибкий тип.
.button — выберет все элементы с class="button" ( <div class="button">, <a class="button">).
Селектор по ID: выбирает элемент с уникальным идентификатором. Должен быть один на странице.
#header — выберет единственный элемент с id="header".
Селектор атрибутов — это способ выбора HTML-элементов на основе наличия у них определённого атрибута или его значения.
input[type="email"] — выберет все поля ввода для email.
a[href^="https://"] — выберет все ссылки, адрес которых начинается с https://.
Контекстные селекторы (комбинаторы) — это CSS-правила, которые выбирают элементы не изолированно, а на основе их положения и вложенности относительно других элементов.
Пробел (потомок): div .text — выберет любые элементы с классом .text, которые находятся внутри <div> (на любом уровне вложенности).
> (дочерний элемент): ul > li — выберет только те <li>, которые являются прямыми детьми <ul> (не внуками).
Псевдоклассы выбирают элементы в определенном состоянии.
a:hover — стилизует ссылку при наведении курсора.
tr:nth-child(odd) — выбирает все нечетные строки таблицы.
Псевдоэлементы позволяют стилизовать определенную часть элемента.
p::first-line — стилизует первую строку абзаца.
.price::before { content: "₽"; } — добавит знак рубля перед текстом в элементе с классом .price.
| Тип селектора | Пример синтаксиса | Что выбирает? | Где используют |
|---|---|---|---|
| По тегу | p, div, a | Все элементы данного типа на странице | Для глобальных, базовых стилей (сброс отступов у списков, стили ссылок) |
| По классу | .button, .active, .menu-item | Все элементы, у которых в атрибуте class есть указанное значение | Основной инструмент стилизации. Для многократно используемых стилей |
| По ID | #header, #submit-form | Единственный элемент с указанным уникальным id | Для якорных ссылок, строго уникальных элементов макета. Осторожно в CSS |
| По атрибуту | [type="text"], [href^="https"] | Элементы, имеющие данный атрибут (или его конкретное значение) | Для стилизации полей форм, ссылок с особыми протоколами, элементов данных |
| Универсальный (*) | *, div * | Все элементы (или все внутри указанного контекста) | Для глобальных правил (например, box-sizing), отладки |
| Псевдокласс | :hover, :nth-child(odd), :focus | Элементы в определённом состоянии или положении | Для интерактивности (наведение, фокус), чередования строк таблиц |
| Псевдоэлемент | ::before, ::first-line | Определённую часть элемента (первую строку, генерируемое содержимое) | Для декоративных элементов, типографических эффектов |
XPath (XML Path Language) — мощный язык для навигации по DOM. Он может искать элементы по тексту, двигаться вверх по дереву (к родителям) и делать сложные выборки.
Пример:
//div[@id='content']//p[contains(text(),'важный')] — найдет все абзацы <p> внутри <div id="content">, которые содержат слово «важный».
Отличие от CSS: CSS читается проще и быстрее для базовых задач. XPath мощнее для сложных запросов, но может быть медленнее и сложнее в поддержке.
Помимо CSS и XPath, современные фреймворки предлагают специальные удобные локаторы:
По тексту: page.getByText('Submit') (Playwright).
По test-id (рекомендованный способ): data-testid="login-button". Разработчики специально добавляют такие атрибуты для стабильности тестов. Селектор: [data-testid="login-button"].
Нативный JavaScript для выбора элементов использует методы querySelector (первый найденный) и querySelectorAll (все элементы), принимающие строку с CSS-селектором.
document.querySelector('.active') — найдет первый элемент с классом active.
Селектор — это механизм точной выборки элементов из структурированной среды (таблицы БД, XML-документа) по заданному правилу. В веб-разработке селекторы используются для:
Селектор — это простыми словами инструкция для поиска. Представьте, что вам нужно найти в огромном списке контактов всех друзей из Москвы. Правило «город = Москва» и будет селектором. Селектор в программировании делает то же самое: он находит нужные элементы (например, все красные кнопки на сайте или строки в базе данных), чтобы с ними можно было что-то сделать.
Это зависит от задачи. CSS-селекторы рекомендуются для большинства случаев: они читаемее, работают быстрее и их синтаксис знаком фронтенд-разработчикам. Используйте их для выборки по классам, атрибутам и простой иерархии. XPath стоит выбрать, когда нужна сложная логика: поиск по точному тексту (text()='Сохранить'), навигация вверх к родительским элементам или использование сложных условий (and, or). Главное правило — избегать в XPath фрагментов, зависящих от абсолютного положения в DOM (например, /html/body/div[5]/div[1]), так как они очень хрупкие.
Ключевых отличий два:
Для стилизации всегда предпочитайте классы. Для якорных ссылок или скриптов, которым нужна гарантированно одна цель, можно использовать ID.
Это самая частая проблема. Вот чек-лист для диагностики:
Специфичность CSS-селектора — это система весов или числовой приоритет, который определяет, какое из нескольких конкурирующих правил будет применено к элементу: чем специфичнее селектор (например, ID весит больше, чем класс), тем выше его приоритет при конфликте стилей. Рассчитывается как четыре числа (a, b, c, d):
a = 1 для стилей внутри style="" (инлайн).
b — количество ID в селекторе (#header).
c — количество классов, псевдоклассов (:hover) и селекторов атрибутов ([type="text"]).
d — количество тегов (div) и псевдоэлементов (::before).
Пример: селектор #nav .menu li.active имеет специфичность 0,1,2,1 (0 инлайн, 1 ID, 2 класса, 1 тег). Правило с большим числом в старшем разряде (сравнение идет слева направо: a → b → c → d) — побеждает.