🎁 Зарегистрируйтесь и получите до 30 минут бесплатного использования онлайн-ИИ. Банковская карта не требуется.

Вопросы и ответы для собеседования по Selenium: 24 вопроса об ожиданиях, локаторах и фреймворках

September 2, 2026
Вопросы для собеседования по Selenium с ответами о локаторах, ожиданиях, нестабильных тестах, page objects, проектировании фреймворков, параллельных запусках и сбоях CI.
Вопросы и ответы для собеседования по Selenium: 24 вопроса об ожиданиях, локаторах и фреймворках
вопросы для собеседования по selenium
вопросы и ответы для собеседования по selenium
собеседование по selenium ожидания
вопросы для собеседования по selenium фреймворк

Собеседования по Selenium проверяют две вещи: умеете ли вы писать стабильные UI-тесты (ожидания, локаторы, page objects) и можете ли вы спроектировать фреймворк, с которым команда сможет жить (структура, данные, отчётность, запуск в CI). Нестабильные тесты — самая частая тема, потому что каждый, кто работал с Selenium, с ними боролся.

Ниже — 24 вопроса с ответами. В примерах используется синтаксис Java и Python там, где код помогает, а сами идеи применимы на любом языке.

Основы

1. Что такое Selenium и из каких компонентов он состоит?

Selenium — это open source набор инструментов для автоматизации браузеров. Selenium WebDriver управляет браузерами через их драйверы, и именно его чаще всего имеют в виду. Selenium Grid запускает тесты параллельно на множестве машин и браузеров. Selenium IDE — это расширение для записи и воспроизведения. Selenium не работает с десктопными приложениями и не имеет встроенной отчётности по тестам, поэтому его комбинируют с тестовым фреймворком.

2. Как работает WebDriver?

Ваш тест отправляет команды по протоколу W3C WebDriver через HTTP драйверу браузера, например ChromeDriver или GeckoDriver, который управляет браузером и возвращает результаты. В последних версиях Selenium есть Selenium Manager, который находит и скачивает нужный драйвер.

3. Какие локаторы поддерживает Selenium и какие предпочитаете вы?

ID, name, class name, tag name, link text, partial link text, CSS-селектор и XPath. Предпочитайте стабильный ID или специальный тестовый атрибут вроде data-testid, а затем CSS. Используйте XPath, когда нужно подняться по дереву или сопоставить текст. Избегайте длинных путей, основанных на позиции, вроде /html/body/div[3]/div[2] — они ломаются при изменении вёрстки.

4. В чём разница между findElement и findElements?

findElement возвращает первое совпадение и бросает NoSuchElementException, если совпадений нет. findElements возвращает список, который пуст, если ничего не найдено, поэтому он полезен для проверки отсутствия элемента.

5. В чём разница между driver.close() и driver.quit()?

close() закрывает текущее окно. quit() закрывает все окна и завершает сессию. Используйте quit() в teardown, чтобы не оставалось висящих процессов браузера.

Ожидания и нестабильные тесты

6. Какие бывают виды ожиданий?

ОжиданиеКак работает
НеявноеГлобальный таймаут для поиска элементов
ЯвноеОжидает конкретного условия для конкретного элемента
FluentЯвное ожидание с настраиваемым интервалом опроса и игнорируемыми исключениями
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("submit")));

Предпочитайте явные ожидания. Смешивание неявных и явных ожиданий может приводить к непредсказуемым задержкам.

7. Почему не стоит использовать Thread.sleep?

Он всегда ждёт всё указанное время, замедляя набор тестов, и при этом его всё равно может не хватить в медленный день. Ожидание по условию продолжается сразу, как только условие выполнено, а иначе падает с понятным сообщением.

8. Что вызывает нестабильные тесты и как это исправить?

Частые причины и решения:

  • Тайминги: используйте явные ожидания конкретного условия, а не sleep.
  • Общие или оставшиеся данные: создавайте тестовые данные для каждого теста и убирайте их за собой.
  • Зависимость между тестами: делайте каждый тест независимым и запускаемым отдельно.
  • Нестабильные локаторы: добавляйте тестовые ID и избегайте путей, основанных на позиции.
  • Анимации и оверлеи: дождитесь исчезновения оверлея или отключите анимации в тестовом окружении.
  • Проблемы окружения: стабилизируйте тестовое окружение, проверяйте сетевые и сторонние вызовы.
  • Влияние параллельного запуска: изолируйте состояние для каждого потока.

Отправьте нестабильный тест в карантин, чтобы он не блокировал всех, а затем почините его как следует. Не стоит просто везде добавлять ретраи — это скрывает реальные баги.

9. Что такое StaleElementReferenceException?

Найденный вами элемент больше не привязан к странице, обычно потому что страница перерисовалась. Исправляется повторным поиском элемента непосредственно перед использованием или ожиданием нового элемента, а не долгим хранением ссылок.

10. Как обрабатывать элементы, по которым нельзя кликнуть (ElementClickInterceptedException)?

Что-то перекрывает элемент, например баннер или загрузочный оверлей. Дождитесь исчезновения оверлея, проскролльте элемент в зону видимости или закройте баннер. Клик через JavaScript должен быть крайней мерой, потому что реальный пользователь не смог бы кликнуть, и тест скрыл бы настоящий баг.

Работа с элементами страницы

11. Как вы работаете с выпадающими списками, алертами, фреймами и окнами?

  • Выпадающие списки: класс Select для стандартных элементов select и клики для кастомных выпадающих списков.
  • Алерты: driver.switchTo().alert() для принятия, отклонения или чтения.
  • Фреймы: switchTo().frame(...) и обратно к defaultContent().
  • Окна и вкладки: получаем дескрипторы окон, переключаемся на новое и обратно.

12. Как вы работаете с загрузкой и скачиванием файлов?

Для загрузки передаём путь к файлу в элемент input type="file" через sendKeys. Для скачивания задаём директорию загрузок в опциях браузера, ждём появления файла, затем проверяем его имя и содержимое.

13. Как запустить JavaScript в Selenium?

Через JavascriptExecutor.executeScript, например чтобы проскроллить страницу или прочитать значение, до которого не добраться через API. Используйте это умеренно.

14. Что такое headless-режим?

Браузер работает без видимого окна — это быстрее и подходит для серверов и CI. При отладке проверяйте в обычном режиме и следите за размером вьюпорта, потому что вёрстка может отличаться.

Проектирование фреймворка

15. Что такое Page Object Model?

Каждая страница или компонент — это класс, который хранит свои локаторы и действия над ними. Тесты вызывают методы вроде loginPage.loginAs(user) и не трогают локаторы напрямую. Когда UI меняется, вы правите один класс, а не множество тестов.

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
    def login_as(self, user, password):
        self.driver.find_element(By.ID, "user").send_keys(user)
        self.driver.find_element(By.ID, "pass").send_keys(password)
        self.driver.find_element(By.ID, "submit").click()

16. Что входит в хороший тестовый фреймворк?

Тест-раннер (TestNG, JUnit, pytest), page objects, фабрика драйверов для разных браузеров, конфигурация под каждое окружение, управление тестовыми данными, хелперы для ожиданий, отчётность, логирование, скриншоты при падении и интеграция с CI.

17. Как вы управляете тестовыми данными?

Создавайте данные, нужные тесту, через API или подготовку в базе данных в начале, а не через UI, и удаляйте их после. Храните данные в файлах или билдерах, а не хардкодьте в тестах, и избегайте тестов, которые полагаются на данные, оставленные другим тестом.

18. Как запускать тесты параллельно?

Используйте параллельный режим раннера, давайте каждому потоку свой драйвер (например, через ThreadLocal), держите тесты независимыми и запускайте на Selenium Grid или облачном сервисе браузеров, чтобы масштабироваться по браузерам.

19. Что такое Selenium Grid?

Это система с хабом и нодами (или распределённая конфигурация в Grid 4), которая запускает тесты на разных браузерах и операционных системах параллельно. Это сокращает общее время прогона и позволяет покрыть больше браузеров.

Стратегия и сценарии

20. Что стоит автоматизировать с помощью Selenium, а что нет?

Автоматизируйте стабильные, ценные и повторяемые сценарии: логин, оформление заказа, критичные регрессионные пути. Не автоматизируйте разовые проверки, часто меняющийся UI или то, что лучше тестировать на более низком уровне. Здоровый набор тестов — это много unit- и API-тестов, меньше UI-тестов и небольшой набор end-to-end сценариев.

21. Как тестировать приложение с капчей или двухфакторным входом?

Не пытайтесь обойти их в тесте. Используйте тестовое окружение, где они отключены, тестовый аккаунт с фиксированным кодом или флагом обхода, либо тестовый API для создания сессии.

22. Тест проходит локально, но падает в CI. Что вы проверяете?

Версии браузера и драйвера, размер экрана и различия headless-режима, тайминги на более медленных машинах, данные окружения, доступ к сети, часовые пояса и локаль, а также параллельные прогоны, которые делят данные. При падении сохраняйте скриншоты, исходный код страницы и логи для сравнения.

23. Как выбрать между Selenium, Playwright и Cypress?

Selenium поддерживает много языков и браузеров и имеет огромную экосистему. Playwright и Cypress предлагают встроенные ожидания, более простую настройку и хорошие инструменты отладки — они могут лучше подойти новым проектам. Правильный выбор зависит от языка, требований к браузерам и навыков команды. Приводите свои аргументы, а не предпочтение бренда.

24. Проведите меня через автоматизацию сценария оформления заказа.

«Я бы создал пользователя и товар через API, затем вошёл через UI или переиспользовал сессию. Page object для каждого шага: поиск, товар, корзина и оплата. Я бы использовал тестовый способ оплаты, дождался элемента подтверждения, проверил заказ через UI и API и сделал скриншот при падении. Тест удалял бы свой заказ, запускался параллельно и выполнялся в пайплайне при каждом мерже».

Как готовиться

Напишите небольшой набор тестов для демо-сайта с page objects, явными ожиданиями, скриншотами при падении и запуском в CI. Потренируйтесь объяснять, как вы починили нестабильный тест, с причиной и изменением. Будьте готовы вживую написать локатор и ожидание. Смотрите наш гайд по ассистенту для собеседований по программированию для тренировочных routines и гайд по поведенческому интервью для раунда по soft skills.

Проговаривайте ответы вслух и перечитывайте транскрипт на предмет размытых мест вроде «просто добавь ожидание». Соблюдайте правила работодателя об использовании AI-инструментов на любом живом собеседовании.

Практикуйте ответы для собеседования по Selenium с YesToTheOffer

Пройдите mock-техническое собеседование, объясните свой фреймворк вслух и просмотрите транскрипт afterward. 30 бесплатных минут, без подписки.

iOS & Android — Скоро
Цены