Селекторы
Testplane предоставляет множество способов для поиска элементов на странице браузера.
Рекомендации по использованию селекторов
Мы рекомендуем искать элементы так же, как это делают пользователи тестируемого приложения.
При выборе можно руководствоваться 3 факторами:
- Ориентация на пользователя — селектор отражает то, что видит и использует пользователь
- Стабильность — селектор не ломается при рефакторинге, изменениях CSS или структуры страницы
- Уникальность — селектор однозначно идентифицирует нужный элемент
| Селектор / Способ выбора | Рекомендация | Примечания |
|---|---|---|
По видимому содержимому — тексту, роли, ... (getByRole, getByText, ...) | ✅ Лучший | Ищем элементы так же, как это делают пользователи: по тексту, роли, label — стабильный и "честный" способ поиска. |
По атрибуту data-testid (например, [data-testid="submit"]) | ✅ Хорошо | Атрибут data-testid создан специально для автоматизации: не влияет на стили/доступность, стабилен, явно обозначает цель элемента, но требует ручной разметки такими ID. |
По ID (например, #main) | ⚠️ Редко | ID стабильнее классов, но все равно может зависеть от JS‑логики или изменений в разметке. Используйте, только если ID гарантированно устойчив. |
По типу атрибута (например, input[type="text"]) | ⚠️ Редко | Работает, если тип атрибута семантически значим и стабилен. Но может быть слишком общим (много элементов одного типа). |
По атрибутам (кроме data-testid, например, [name="email"]) | ⚠️ Редко | Зависит от семантики HTML‑атрибутов. Может быть нестабильным (атрибуты меняют значение или удаляются). |
XPath (например, (//button)[2]) | 🔴 Плохо | Позиция элемента может измениться, селекторы XPath как правило сложно поддерживать. Однако они могут быть полезны, так как дают максимум возможностей для поиска элементов. |
По классу (например, .sidebar .list-item.state-opened-qU1azF) | 🔴 Плохо | Не связан с поведением пользователя и не отражает семантику, жесткая завязка на иерархию. |
WebdriverIO
В Testplane поддерживается поиск элементов, совместимый с синтаксисом WebdriverIO: по CSS селекторам, по XPath, по тексту элементов и по другим признакам, которые описаны ниже.
Селекторы по тексту
Данный вид селекторов позволяет искать элементы по содержащемуся в них тексту:
="text"— точный поиск текста*="text"— поиск по частичному совпадению текстаa*=text— поиск по тексту внутри тега<a>div.=text— case-insensitive поиск текста внутри тега<div>
describe("