Какие виды локаторов страницы существуют? Каковы их преимущества и недостатки?
В веб-тестировании (Selenium, Playwright, Cypress и др.) локаторы — это способы нахождения элементов на веб-странице.
🔑 Виды локаторов:
ID
Пример:
driver.find_element(By.ID, "username")
✅ Преимущества: уникальный, быстрый, самый надёжный способ.
❌ Недостатки: не всегда есть на элементе, может меняться при обновлении фронта.
Name
Пример:
driver.find_element(By.NAME, "email")
✅ Плюсы: читаемый, часто используется для input-ов (форм).
❌ Минусы: может быть неуникальным → вернёт первый попавшийся элемент.
Class Name
Пример:
driver.find_element(By.CLASS_NAME, "btn-primary")
✅ Плюсы: удобно, если класс уникален.
❌ Минусы: классов может быть несколько, часто генерируются автоматически (BEM, Tailwind, Bootstrap).
Tag Name
Пример:
driver.find_element(By.TAG_NAME, "input")
✅ Плюсы: просто для поиска группы элементов.
❌ Минусы: редко уникален, почти всегда требует уточнения.
Link Text / Partial Link Text
Пример:
Полный:
driver.find_element(By.LINK_TEXT, "Forgot password?")
Частичный:
driver.find_element(By.PARTIAL_LINK_TEXT, "Forgot")
✅ Плюсы: удобно для ссылок и кнопок-ссылок.
❌ Минусы: зависит от текста → при локализации/редизайне ломается.
CSS Selector
Пример:
driver.find_element(By.CSS_SELECTOR, "div.login input[type='text']")
✅ Плюсы: мощный, быстрый, поддерживает сложные комбинации.
❌ Минусы: может быть хрупким, если вёрстка часто меняется.
XPath
Пример:
driver.find_element(By.XPATH, "//div[@id='login']//input[@name='username']")
✅ Плюсы: гибкий, можно строить сложные выражения, двигаться по DOM (родитель → потомок).
❌ Минусы: длинный, менее читаемый, более медленный, чем CSS.
⚖️ Итог:
Лучше всего использовать:
ID
(если есть).Хорошая альтернатива:
CSS Selector
.XPath нужен для сложных случаев (например, если нужно выбрать элемент по тексту).
Name / Class / Tag / Link Text применяются как вспомогательные.
Last updated
Was this helpful?