Какие типы локаторов используются в Selenium WebDriver?

«Какие типы локаторов используются в Selenium WebDriver?» — вопрос из категории Автоматизация тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Selenium WebDriver предоставляет несколько стратегий для поиска элементов на странице:

  1. By.id("value") – поиск по уникальному атрибуту id. Самый надежный и быстрый способ.
  2. By.name("value") – поиск по атрибуту name, часто используется для полей форм.
  3. By.className("value") – поиск по атрибуту class. Может вернуть несколько элементов.
  4. By.tagName("value") – поиск по имени HTML-тега (например, div, input).
  5. By.linkText("value") – поиск ссылки (<a>) по точному тексту.
  6. By.partialLinkText("value") – поиск ссылки по части текста.
  7. By.cssSelector("selector") – мощный поиск с использованием CSS-селекторов. Гибкий и производительный.
  8. By.xpath("expression") – поиск с помощью языка XPath. Максимальная гибкость, но может быть медленным и хрупким.

Рекомендации по выбору:

  • Приоритет 1: id (если он уникален и стабилен).
  • Приоритет 2: name или стабильный cssSelector.
  • Приоритет 3: xpath – используйте как последний вариант, особенно для сложных или динамических путей.

Примеры в Java:

// Надежный поиск по ID
WebElement loginButton = driver.findElement(By.id("submit-login"));

// Гибкий поиск по CSS
WebElement firstRow = driver.findElement(By.cssSelector("table.data > tbody > tr:first-child"));

// Поиск по XPath (если другие способы не подходят)
WebElement dynamicElement = driver.findElement(By.xpath("//div[contains(@class, 'alert') and text()='Success']"));