Питання на співбесіді Selenium

Автор: Aaron Cao · Оновлено

Питання на співбесіді Selenium
Співбесіди з Selenium зосереджені на wait, локаторах, Page Object Model і причинах, чому тести стають flaky. Очікуйте пояснити різницю між implicit і explicit wait, обрати CSS замість XPath і обґрунтувати вибір, вирішити помилку stale element та описати, як ваш фреймворк працює паралельно.

Співбесіди з Selenium зосереджені на wait, локаторах, Page Object Model і причинах, чому тести стають flaky. Очікуйте пояснити різницю між implicit і explicit wait, обрати CSS замість XPath і обґрунтувати вибір, вирішити помилку stale element та описати, як ваш фреймворк працює паралельно.

Що питають про wait і локатори?

Ви писали тести, що проходять локально, але падають у pipeline, і підозрюєте, що причина у wait, хоч і не можете чітко це сформулювати. Інтерв'юери це знають, тому wait відкриває більшість раундів Selenium. Цей розділ показує, як звучить повна відповідь.

  • Implicit проти explicit wait. Implicit wait, це глобальна настройка, яка опитує наявність елемента при кожному пошуку. Explicit wait націлений на один елемент і одну умову, наприклад clickable чи visible. Explicit кращий, бо чітко вказує, чого саме очікують.
  • Чому їх не варто змішувати? Поєднання обох може непередбачувано підсумовувати таймаути, тому більшість команд ставлять implicit wait на нуль і всюди використовують explicit wait.
  • Що таке fluent wait? Explicit wait із налаштовуваним інтервалом опитування та ігнорованими типами exception.
  • Чим помилковий Thread.sleep? Він безумовний. Уповільнює тест, що пройшов би, і все одно не рятує повільний тест від провалу.
  • CSS selector чи XPath? Надавайте перевагу стабільному атрибуту-ідентифікатору тесту, потім CSS для читабельності. XPath має сенс, коли потрібно піднятися до parent або зіставити за текстом.
  • Що робить локатор крихким? Автоматично згенеровані назви класів, абсолютний XPath і вибір за індексом. Скажіть, що б ви попросили розробника додати натомість.

Інтерв'юери слухають причину за кожним вибором. Назвати перевагу без її ціни звучить як завчена відповідь.

Як відповідати на питання про exception і нестабільність тестів?

Flaky тести це справжня тема більшості senior співбесід з автоматизації, бо suite, якому ніхто не довіряє, гірший за відсутність suite взагалі.

  • Що спричиняє StaleElementReferenceException? Посилання на елемент вказує на вузол, який більше не приєднаний, зазвичай тому, що фреймворк перерендерив цю частину сторінки. Знайдіть елемент заново, а не використовуйте збережене посилання.
  • А як щодо ElementNotInteractableException? Елемент існує, але з ним не можна взаємодіяти: він прихований, disabled, перекритий overlay, або поза екраном.
  • Як обробляти NoSuchElementException? Відрізняйте проблему з таймінгом від елемента, якого справді немає, і не маскуйте це довшим sleep.
  • Чому тести падають лише в pipeline? Інший розмір viewport, повільніше середовище, відсутні тестові дані, анімації, що завершуються пізніше, і паралельні тести, що конфліктують на спільному стані.
  • Як виправити flaky тест? Спершу діагностуйте категорію, потім усувайте причину. Auto-retry приховує збої і є останнім засобом, який варто так і називати.
  • Як працювати з frame, новими вікнами та alert? Явно перемикати контекст, а потім повертатися назад.

QA-інженера, який проходив співбесіду на посаду mid-level з автоматизації, запитали, чому один suite падав двічі на тиждень без змін у коді. Правильною відповіддю була не деталь API Selenium, а те, що тести ділили один seeded акаунт і заважали одне одному. Інтерв'юери цінують саме такий порядок діагностики: спершу середовище й дані, потім API.

Більше банків питань за роллю та інструментом наведені під interview questions by role.

Які питання про фреймворк і архітектуру виникають?

Окрім API, панель хоче знати, чи здатні ви вести suite. Ці питання мають найбільшу вагу для senior ролей.

  • Поясніть Page Object Model. Класи page відкривають дії й ховають локатори, тож зміна UI зачіпає лише один файл. Скажіть, яку проблему це вирішує; опис самої структури папок не влучає в суть.
  • Що може піти не так із Page Object? Вони розростаються в класи на тисячі рядків і починають робити assert усередині page-методів. Assertion мають бути в тестах.
  • Як ваш фреймворк запускає тести паралельно? Thread-safe керування driver, щоб інстанси не ділилися між потоками, плюс незалежні тестові дані для кожного тесту.
  • Для чого потрібен Selenium Grid? Розподіляти тести між машинами й версіями браузерів, із hub і node, або з хмарним провайдером, що виконує ту саму роль.
  • Що змінилося в Selenium 4? Протокол W3C WebDriver став стандартом, старий JSON wire protocol прибрали, з'явилися relative локатори, і відкрився доступ до Chrome DevTools Protocol.
  • Коли ви не використовували б Selenium? Для перевірок на рівні API, логіки, яку можна покрити unit-тестами, і всього поза браузером. Знання цієї межі є сигналом senior-рівня.
  • Як ви вирішуєте, що автоматизувати? Стабільні, цінні, повторювані шляхи. Не все підряд, і не екран, що досі перебуває в редизайні.

Як варто готуватися до співбесіди?

Відповіді про Selenium незвично легко знати й важко вимовити. Питання про wait зокрема має відповідь із двох частин, визначення й причину, і кандидати, які лише прочитали це, видають першу половину і губляться.

Візьміть п'ять питань звідси, з якими найменше хочете зіткнутися, і відповідайте на кожне вголос за дев'яносто секунд без відкритого редактора. Потім попросіть когось поставити уточнювальне питання, яким майже завжди буде чому. Прогнати ті самі підказки на AI-інтерв'юері, що дожимає, ближче до реального раунду, ніж перечитувати список, і саме для цього існує режим mock interview.

Aaron Cao, засновник SubcueAI, побудував цю практику навколо цього розриву в мовленні, а не навколо постачання ще більшої кількості питань. Під час живої співбесіди десктопний застосунок і Side Panel розширення браузера можуть показувати структуру, поки говорить інтерв'юер, що найбільше допомагає з матеріалом, який ви вже відпрацювали. Що робить продукт і межі, які він не перетинає, описано на сторінці security.

Часті запитання

Чи варто досі вчити Selenium, коли є Playwright і Cypress?

Так, для багатьох команд із великими наявними suite Selenium, і концепції переносяться напряму. Інтерв'юери дедалі частіше просять їх порівняти, тож будьте готові назвати auto-waiting і архітектуру з одним процесом як причини, чому команди обирають новіші інструменти.

Якою мовою варто користуватися на співбесіді з Selenium?

Тією, що вказана в описі вакансії, зазвичай Java або Python. API майже ідентичний у всіх binding, тож мова має значення переважно для питань про фреймворк, test runner, керування залежностями та структуру проєкту.

Чи включають співбесіди з Selenium live coding?

Часто так. Типова вправа: автоматизувати вхід або пошук на публічному сайті, поки інтерв'юер стежить за вашим вибором локаторів і чи звертаєтеся ви до sleep. Пояснюйте вголос, чому обираєте кожен локатор у процесі.

Чи може Selenium обробляти CAPTCHA або діалоги завантаження файлів?

CAPTCHA спеціально створена, щоб зупиняти автоматизацію, тож прийнятна відповідь: вимкнути її в тестових середовищах або використати bypass-токен. Нативні діалоги файлів ОС перебувають поза браузером, тож ви надсилаєте шлях безпосередньо в елемент input.

Чи може AI-асистент допомогти під час живої співбесіди з автоматизації?

Він може показувати структуру, поки говорить інтерв'юер, що працює найкраще на матеріалі, який ви вже знаєте. Він не замінює підготовку, а демонстрація екрана, записи, проктор-оцінювання й керовані компанією пристрої лишаються поза межами застосування.

Схожі запитання

← Докладніше: Питання для співбесід за роллю та темою