🎁 지금 가입하면 온라인 AI를 최대 30분 무료로 사용할 수 있습니다. 신용카드는 필요하지 않습니다.

Selenium 면접 질문과 답변: Waits, Locators, 프레임워크에 관한 24가지 질문

September 2, 2026
Locators, waits, flaky 테스트, 페이지 객체, 프레임워크 설계, 병렬 실행, CI 실패에 대한 답변이 포함된 Selenium 면접 질문.
Selenium 면접 질문과 답변: Waits, Locators, 프레임워크에 관한 24가지 질문
selenium interview questions
selenium interview questions and answers
selenium waits interview
selenium framework interview questions

Selenium 면접은 두 가지를 봅니다. 안정적인 UI 테스트를 작성할 수 있는지(대기, 로케이터, 페이지 객체), 그리고 팀이 함께 쓸 수 있는 프레임워크를 설계할 수 있는지(구조, 데이터, 리포팅, CI에서의 실행)입니다. 가장 많이 나오는 주제는 불안정한(flaky) 테스트인데, Selenium을 써본 사람이라면 누구나 이와 씨름해 봤기 때문입니다.

아래는 답변과 함께 정리한 24개의 질문입니다. 코드가 도움이 되는 부분은 Java와 Python 문법을 사용했으며, 아이디어 자체는 어떤 언어에도 적용됩니다.

기초

1. Selenium이란 무엇이고, 구성 요소는 무엇인가요?

Selenium은 웹 브라우저를 자동화하기 위한 오픈 소스 제품군입니다. Selenium WebDriver는 드라이버를 통해 브라우저를 제어하며, 보통 사람들이 Selenium이라고 하면 이 부분을 뜻합니다. 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()는 모든 창을 닫고 세션을 종료합니다. 브라우저 프로세스가 남지 않도록 teardown에서는 quit()를 사용하세요.

대기와 불안정한 테스트

6. 대기(wait)의 종류에는 무엇이 있나요?

대기동작 방식
암시적(Implicit)요소를 찾기 위한 전역 타임아웃
명시적(Explicit)특정 요소에 대한 특정 조건을 기다림
Fluent폴링 간격과 무시할 예외를 사용자 정의한 명시적 대기
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("submit")));

명시적 대기를 선호하세요. 암시적 대기와 명시적 대기를 섞으면 예측할 수 없는 지연이 발생할 수 있습니다.

7. Thread.sleep을 사용하면 안 되는 이유는 무엇인가요?

항상 정해진 시간만큼 기다리기 때문에 스위트가 느려지고, 그런데도 느린 날에는 여전히 부족합니다. 조건 기반 대기는 조건이 충족되는 즉시 진행하고, 그렇지 않으면 명확한 메시지와 함께 실패합니다.

8. 불안정한 테스트의 원인은 무엇이고, 어떻게 고치나요?

흔한 원인과 해결 방법:

  • 타이밍: sleep이 아니라 정확한 조건에 대한 명시적 대기를 사용하세요.
  • 공유되거나 남은 데이터: 테스트마다 테스트 데이터를 생성하고 정리하세요.
  • 테스트 간 의존성: 각 테스트를 독립적으로 만들어 단독으로도 실행 가능하게 하세요.
  • 불안정한 로케이터: 테스트 ID를 추가하고 위치 기반 경로를 피하세요.
  • 애니메이션과 오버레이: 오버레이가 사라질 때까지 기다리거나 테스트 환경에서 애니메이션을 비활성화하세요.
  • 환경 문제: 테스트 환경을 안정화하고 네트워크와 서드파티 호출을 점검하세요.
  • 병렬 실행 간섭: 스레드별로 상태를 격리하세요.

불안정한 테스트는 모두를 막지 않도록 격리(quarantine)한 뒤 제대로 고치세요. 재시도를 여기저기 추가하는 것은 실제 버그를 숨기므로 피해야 합니다.

9. StaleElementReferenceException이란 무엇인가요?

찾아둔 요소가 더 이상 페이지에 연결되어 있지 않은 경우로, 보통 페이지가 다시 렌더링될 때 발생합니다. 참조를 오래 들고 있지 말고, 사용 직전에 요소를 다시 찾거나 새로운 요소를 기다리는 방식으로 해결하세요.

10. 클릭할 수 없는 요소(ElementClickInterceptedException)는 어떻게 처리하나요?

배너나 로딩 오버레이 같은 무언가가 요소를 가리고 있는 것입니다. 오버레이가 사라질 때까지 기다리거나, 요소를 뷰 안으로 스크롤하거나, 배너를 닫으세요. JavaScript 클릭은 최후의 수단이어야 합니다. 실제 사용자라면 클릭할 수 없기 때문에, 테스트가 실제 버그를 숨기게 되기 때문입니다.

페이지 기능 다루기

11. 드롭다운, 알럿, 프레임, 윈도우는 어떻게 처리하나요?

  • 드롭다운: 표준 select 요소에는 Select 클래스를 사용하고, 커스텀 드롭다운에는 클릭 기반 단계를 사용합니다.
  • 알럿: driver.switchTo().alert()로 수락, 거부, 또는 내용을 읽습니다.
  • 프레임: switchTo().frame(...)으로 전환하고 defaultContent()로 돌아옵니다.
  • 윈도우와 탭: 윈도우 핸들을 가져와 새 윈도우로 전환하고, 다시 원래대로 돌아옵니다.

12. 파일 업로드와 다운로드는 어떻게 처리하나요?

업로드는 input type="file" 요소에 sendKeys로 파일 경로를 전달합니다. 다운로드는 옵션에서 브라우저의 다운로드 디렉터리를 설정하고 파일이 나타날 때까지 기다린 뒤, 파일 이름과 내용을 확인합니다.

13. Selenium에서 JavaScript를 어떻게 실행하나요?

JavascriptExecutor.executeScript를 통해 실행합니다. 예를 들어 스크롤하거나 API로 접근할 수 없는 값을 읽을 때 사용합니다. 꼭 필요한 경우에만 사용하세요.

14. 헤드리스 모드는 무엇인가요?

브라우저가 보이는 창 없이 실행되는 것으로, 더 빠르고 서버와 CI에서도 작동합니다. 디버깅할 때는 보이는 모드로 실행해 확인하고, 레이아웃이 달라질 수 있으므로 뷰포트 크기도 확인하세요.

프레임워크 설계

15. 페이지 오브젝트 모델이란 무엇인가요?

각 페이지나 컴포넌트가 로케이터와 그 위에서 수행하는 동작을 담은 클래스가 됩니다. 테스트는 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), 페이지 오브젝트, 다양한 브라우저를 위한 드라이버 팩토리, 환경별 설정, 테스트 데이터 관리, 대기용 헬퍼, 리포팅, 로깅, 실패 시 스크린샷, CI 연동이 포함됩니다.

17. 테스트 데이터는 어떻게 관리하나요?

테스트에 필요한 데이터는 UI가 아니라 시작 시 API나 데이터베이스 설정을 통해 만들고, 끝난 뒤 제거합니다. 데이터는 테스트에 하드코딩하지 않고 파일이나 빌더에 두며, 다른 테스트가 남긴 데이터에 의존하는 테스트는 피하세요.

18. 테스트를 병렬로 실행하려면 어떻게 하나요?

러너의 병렬 기능을 사용하고, 각 스레드에 자체 드라이버를 부여하며(예: ThreadLocal 사용), 테스트를 독립적으로 유지하고, Selenium Grid나 클라우드 브라우저 서비스에서 실행해 여러 브라우저로 확장합니다.

19. Selenium Grid란 무엇인가요?

허브와 노드(Grid 4에서는 분산 구성)로 이루어진 시스템으로, 여러 브라우저와 운영체제에서 테스트를 병렬로 실행합니다. 전체 실행 시간을 줄이고 더 많은 브라우저를 커버할 수 있게 해줍니다.

전략과 시나리오

20. Selenium으로 무엇을 자동화해야 하고, 무엇을 하지 말아야 하나요?

로그인, 결제, 핵심 회귀 경로처럼 안정적이고 가치가 높으며 반복 가능한 흐름을 자동화하세요. 일회성 점검이나 자주 바뀌는 UI, 더 낮은 계층에서 테스트하는 게 나은 것들은 자동화하지 마세요. 건강한 스위트는 단위 테스트와 API 테스트가 많고 UI 테스트는 적으며, 소수의 엔드투엔드 흐름을 갖습니다.

21. 캡차나 2단계 로그인이 있는 애플리케이션은 어떻게 테스트하나요?

테스트에서 이를 우회하려 하지 마세요. 캡차가 비활성화된 테스트 환경, 고정 코드나 우회 플래그가 있는 테스트 계정, 또는 세션을 생성하는 테스트 API를 사용하세요.

22. 로컬에서는 통과하는데 CI에서 실패하는 테스트가 있습니다. 무엇을 확인하나요?

브라우저와 드라이버 버전, 화면 크기와 헤드리스 차이, 느린 머신에서의 타이밍, 환경 데이터, 네트워크 접근, 시간대와 로케일, 데이터를 공유하는 병렬 실행을 확인하세요. 실패 시 스크린샷, 페이지 소스, 로그를 캡처해 비교하세요.

23. Selenium, Playwright, Cypress 중 어떻게 선택하나요?

Selenium은 다양한 언어와 브라우저를 지원하고 생태계가 거대합니다. Playwright와 Cypress는 내장 대기 기능, 쉬운 설정, 좋은 디버깅 도구를 제공하며 새 프로젝트에 더 적합할 수 있습니다. 올바른 선택은 언어, 브라우저 요구사항, 팀 역량에 달려 있습니다. 브랜드 선호가 아니라 이유를 말하세요.

24. 결제 흐름 자동화를 설명해 보세요.

"API로 사용자와 상품을 만들고, UI로 로그인하거나 세션을 재사용하겠습니다. 검색, 상품, 장바구니, 결제 각 단계마다 페이지 오브젝트를 두겠습니다. 테스트 결제 수단을 사용하고, 확인 요소를 기다린 뒤, UI와 API 양쪽으로 주문을 검증하고, 실패 시 스크린샷을 찍겠습니다. 테스트는 자신의 주문을 정리하고, 병렬로 실행되며, 머지할 때마다 파이프라인에서 실행되게 하겠습니다."

준비 방법

페이지 오브젝트, 명시적 대기, 실패 시 스크린샷, CI 실행을 포함한 작은 스위트를 데모 사이트용으로 작성해 보세요. 불안정한 테스트를 어떻게 고쳤는지 원인과 변경 사항을 함께 설명하는 연습을 하세요. 로케이터와 대기를 즉석에서 코딩할 준비를 하세요. 연습 루틴은 코딩 인터뷰 어시스턴트 가이드를, 소프트 스킬 라운드는 행동 면접 가이드를 참고하세요.

답변을 소리 내어 말해 보고, "그냥 대기를 추가했다"처럼 모호한 부분은 녹취록을 읽어 보세요. 실시간 면접에서는 AI 도구에 관한 고용주의 규칙을 따르세요.

YesToTheOffer와 함께 Selenium 면접 답변을 연습하세요

모의 기술 면접을 진행하고, 프레임워크를 소리 내어 설명한 후, 녹취록을 검토하세요. 30분 무료, 구독 없음.

iOS & Android — 출시 예정
요금 보기