[Selenium] Selenium 작동원리

한호성·2024년 5월 3일
0

Index

셀레니움이란?
셀리니움 WebDrvier Architecture

셀리니움이란?

  • 2004년 제이슨 허긴스가 웹 어플리케이션을 스크립트로 테스트를 편하게 목적으로 개발된 오픈소스이다.
  • 다양한 언어 및 client 에서 사용할 수 있도록 설계되고 발전되었다.

발전의 역사

  1. JavaScriptRunner (2004년)
    • 웹 어플리케이션을 스크립트로 테스트하는 프로그램
  2. Selenium Core (Selenium RC)
    • 테스트 스크립트와 브라우저 사이에서 프록시 역할을 하는 서버 구성을 도입 ( Cors 같은 문제를 해결)
  3. WebDrvier (2009년)
    • Simon Stewart 라는 사람이 개발한 크로스 플랫폼 라이브러리로, 사용하기 편한 외부 API를 주입함으로써, 브라우저를 사용자가 편하게 제어할 수 있는 API를 제공해주었습니다.
      (복잡성을 많이 덜어내어서 사용성을 올려주었다.)
  • 역사에서 알 수 있는 것
    • 여러 브라우저들에 공통적으로 적용시키기 위해 발전함
      • → Selenium RC에서 언어에 맞게 구현해야 하는 많은 것들을 최소화 하기 위해 공통적으로 뽑아내서 WebDriver로 만든 것을 보면 알 수 있음
    • 테스트하는 환경을 자유롭게 할 수있도록 발전함
      • → 프록시를 도입해서, 테스트 도중에 발생하는 CORS 문제를 해결한 것을 보면 알 수 있음

Selenium Libaray Layer

셀레니움의 라이브러리의 구조는 다음과 같이 되어 있다. 각 구조가 어떤 역할을 하는지 알아보도록 하자.

1 Closure Library

  • 이 라이브러리는 기본 요소와 모듈화 메커니즘을 제공하여 소스 파일을 집중적으로 유지하고 최소한의 크기로 유지할 수 있도록 합니다.
  • Closure 컴파일러가 라이브러리에서 사용하는 모듈화 기술을 이해하기 때문에 채택하였습니다..
  • Closure 컴파일러는 Javascript를 출력 언어로 지원하는 컴파일러입니다. "컴파일"은 입력 파일을 종속성 순서대로 정렬하고 연결하여 예쁘게 출력하는 것만으로 간단할 수도 있고, 고급 최소화와 데드 코드 제거와 같은 복잡한 작업일 수도 있습니다. 또 다른 명백한 장점은 Javascript 코드 작업을 수행하는 팀의 여러 구성원이 Closure Library에 매우 익숙했다는 점입니다.

(위와 같은 이유로 사용하게 되었다고 합니다.)
(정확히 어떤 느낌인지 잘 모르겠다.)

2 Atoms

  • selenium의 원자(atom)은 프로젝트 전반에 걸쳐 널리 사용되기 때문에 다른 브라우저 간에 일관된 동작을 보장할 수 있습니다. 또한 라이브러리가 Javascript로 작성되어 개발 주기를 실행하는 데 특별한 권한이 필요하지 않기 때문에 쉽고 빠릅니다.
    (이 또한 마찬가지로.. 이해하기 어렵다..)

3 WebDrvier + SeleniumCore

  • 우리가 사용하는 외부 API를 작동시키기 위한 많은 구현들이 들어있다.

Web Drvier Architecture

WebDriver를 활용하여 Browser를 컨트롤하기 위해 아래와 같은 구조를 갖고 동작하게 된다.

각 요소가 어떤 역할을 하는지 알아보자

1 Selenium Clinet Libraies

  • 다양한 언어 바인딩을 지원하는 클라이언트 라이브러리이다.
  • 많은 언어에서 API를 호출하더라도, 각 언어에 맞게끔 변환해서 Browser Driver에게 명령을 전달한다고 생각하면 좋을거 같다.

2 JSON Wire 프로토콜  (HTTP)

  • Json 오브젝트 + HTTP 통신을 통해서 Browser Driver에 사용자가 사용한 API Call을 한다.

3 Browser Drivers

  • Selenium 브라우저 드라이버는 실제 드라이버와 통신을 주고 받으면서 명령을 주고 받는다.

4 Real Broswers

  • 실제 작동할 때 보이는, 우리가 사용하는 브라우저라고 생각하면 된다.

핵심은 Broswer Driver 를 통해서 실제 브라우저를 관리한다고 생각하면 된다.

Reference

The Architecture of Open Source Applications (Volume 1)Selenium WebDriver

Architecture of Selenium WebDriver | BrowserStack

profile
개발자 지망생입니다.

0개의 댓글