웹드라이버(WebDriver)

웹드라이버(WebDriver)

브라우저를 자동화하려면 그 브라우저를 조종할 수 있는 손이 필요한데요, 바로 그 역할을 하는 게 웹드라이버예요. Selenium WebDriver는 사람이 브라우저를 다루듯이, 로컬 컴퓨터든 원격 서버든 상관없이 브라우저를 네이티브하게 조종해요. 이 한 줄이면 브라우저 자동화에서 굉장히 큰 도약이죠.

웹드라이버가 가리키는 대상은 두 가지예요. 하나는 각 언어용 바인딩(binding)이고, 다른 하나는 브라우저를 실제로 통제하는 개별 브라우저 제어 코드예요. 이 둘을 묶어서 그냥 WebDriver라고 부르죠. Selenium WebDriver는 W3C 권고 표준이라서, 여러 브라우저에서 동일한 코드를 바꿔 쓸 수 있다는 걸 보장받을 수 있어요.

출처: WebDriver - Selenium 공식 문서

본문

웹드라이버가 설계된 방향을 세 가지로 정리할 수 있어요.

  • 웹드라이버는 단순하면서도 함축적인 프로그래밍 인터페이스로 설계되었어요.
  • 웹드라이버는 컴팩트한 객체지향 API예요.
  • 브라우저를 효과적으로 조종해요.

이름만 봐서는 어떤 동작을 하는지 감이 안 올 수 있는데요, 실은 매우 직관적이에요. 드라이버를 만들면 get() 같은 메서드로 주소를 열고, 요소를 찾고, 입력하고, 마지막에 quit()으로 브라우저를 닫는 흐름이 전부예요. 이 흐름 안에서 요소를 찾고 다루는 일은 아래 문서들이 이어서 설명해 줘요.

웹드라이버에서 이어서 공부할 주요 주제는 이렇게 나뉘어요.

  • 시작하기(Getting started) — Selenium이 처음이라면 설치부터 첫 스크립트까지 빠르게 익힐 수 있는 자료가 준비되어 있어요.
  • 웹 요소(Web elements) — DOM 안에서 요소 객체를 식별하고 다루는 방법이에요.
  • 액션스 API(Actions API) — 가상화된 장치 입력을 브라우저에 전달하는 저수준 인터페이스예요.
  • WebDriver BiDi — WebDriver에 WebSocket 연결을 더해, 네트워크 요청이나 콘솔 메시지, 자바스크립트 오류 같은 브라우저 이벤트를 스크립트가 실시간으로 받아 반응할 수 있게 하는 W3C 표준 양방향 프로토콜이에요. 크롬 개발자 도구 프로토콜(Chrome DevTools Protocol)을 대체하는 크로스 브라우저 수단이죠.
  • 지원 기능(Support features) — 선택적으로 쓸 수 있는 더 높은 수준의 기능을 제공하는 지원 클래스들이에요.
  • 문제 해결(Troubleshooting) — 웹드라이버 문제를 해결하는 방법을 다뤄요.

더 알아보기