[Selenium] Selenium이란?

비비빅·2024년 4월 29일
post-thumbnail

Selenium이란?

Selenium은 오픈 소스 자동화 테스트 프레임워크로 다양한 브라우저에서 테스트를 자동으로 실행하고 결과를 확인할 수 있도록 도와준다. 웹 애플리케이션의 사용자 인터페이스(UI)를 자동으로 탐색하고 상호작용할 수 있는 기능을 제공한다.

Selenium 장점

  1. 다양한 브라우저 및 플랫폼 호환성: Selenium은 모든 주요 브라우저(Chrome, Firefox, Internet Explorer, Safari 등) 및 운영 체제에서 실행될 수 있다. 크로스 브라우징을 확인하고 다양한 환경에서 테스트를 실행할 수 있다.
  2. 다양한 프로그래밍 언어 지원: Java, Python, JavaScript(Node.js), C#, Ruby 등 다양한 프로그래밍 언어에서 사용할 수 있다.
  3. 테스트 자동화: Selenium을 사용하면 테스트 작업을 자동화할 수 있어 테스트의 효율성을 높일 수 있다.
  4. 분산 테스트: Selenium Grid를 사용하면 여러 대의 머신에서 테스트를 병렬로 실행할 수 있어 대규모 테스트를 효율적으로 수행할 수 있다.

Selenium 단점

  1. 속도: Selenium 테스트는 실제 브라우저를 사용하므로 실행 시간이 상대적으로 느릴 수 있다. 대규모 테스트 스위트의 경우에 영향을 줄 수 있음
  2. 인증 팝업 처리의 어려움: 웹 애플리케이션에 인증 팝업이 표시되는 경우 Selenium으로 처리하기가 어려움 이런 경우 보조 도구나 특수한 설정이 필요할 수 있다. (폰으로 인증번호를 받거나 입력해야하는 경우 적용어려울듯...)

Selenium architecture

Selenium 3

  • 주요 components
  1. Selenium Client library: Selenium은 Ruby, Python, Java 등과 같은 여러 라이브러리의 지원을 제공

  2. JSON wire protocol over HTTP: 웹에서 클라이언트와 서버 간에 데이터를 전송하기 위한 전송 메커니즘을 제공하는 개방형 표준

  3. Browser Drivers: Selenium 브라우저 드라이버는 각 브라우저에 기본적으로 제공되며 보안 연결을 설정하여 브라우저와 상호 작용 Selenium은 ChromeDriver, GeckoDriver, Microsoft Edge WebDriver, SafariDriver, InternetExplorerDriver와 같은 다양한 브라우저 드라이버를 지원

  4. Browsers: Selenium은 Chrome, Firefox, Safari, Internet Explorer 등과 같은 여러 브라우저를 지원

Selenium 3에서는 클라이언트 라이브러리와 브라우저 드라이버 간에 직접적인 통신이 없다. 브라우저 드라이버는 언어를 이해하지 못하고 protocols만 이해하며, 클라이언트 라이브러리는 브라우저 드라이버가 사용하는 protocols을 이해못한다.
따라서, 클라이언트와 서버 간의 요청과 응답을 인코딩하고 디코딩하는 데 중개자로JSON Wire protocol이 사용된다.

Selenium 4


Selenium 4의 아키텍처는 Selenium 3과 유사하지만 클라이언트 라이브러리와 브라우저 드라이버 간의 통신을 위해 JSON wire protocol 대신 W3C protocol 사용한다.

W3C가 무엇인가?

W3C 웹 표준을 개발하는 국제 컨소시엄이다. W3C의 주요 목표는 웹의 장기적인 성장과 상호 운용성을 보장하는 것이다.

Selenium 3 WebDriver을 제외하고 Selenium 아키텍처의 모든 브라우저와 브라우저 드라이버는 W3C를 따른다. JSON Wire Protocol은 요청과 응답을 인코딩하고 디코딩하는 데 사용된다. Selenium 4 WebDriver는 클라이언트 라이브러리와 브라우저 드라이버 간의 통신을 쉽고 직접적으로 만들기 위해 W3C 준수로 개발되었고 향상된 통신은 더 큰 안정성으로 이어졌다.
또한, WebDriver 클라이언트와 브라우저 드라이버 간의 통신에 대한 HTTP 요청 및 응답의 오버헤드가 없기 때문에 브라우저 호환성, 성능 및 효율성이 향상되었다. WebDriver는 이제 기본 브라우저 통신 채널과 프로토콜을 활용한다.

출처: https://www.browserstack.com/guide/architecture-of-selenium-webdriver

0개의 댓글