셀레늄(소프트웨어)

Selenium (software)
셀레늄
Selenium logo.svg
초기 릴리즈2004년; 18년 전(2004년)
안정된 릴리스
4.0.0 / 2021년 10월 13일, 9개월 전(2021-10-13)[1]
저장소
기입처Selenium Server: Java, Selenium WebDriver(Selenium Server 제외), 공식 지원: JavaScript(Node.js), Python, Ruby, Java 또는 C#[2]
운영 체제크로스 플랫폼
유형 응용 프로그램용 소프트웨어 테스트 프레임워크
면허증.Apache 라이센스 2.0
웹 사이트셀렌개발 Edit this on Wikidata

Selenium은 브라우저 [3]자동화를 지원하는 것을 목적으로 하는 다양한 도구와 라이브러리를 위한 오픈 소스 우산 프로젝트입니다.테스트 스크립트 언어(Selenium IDE)[4]를 배울 필요 없이 대부분의 최신브라우저에서 기능 테스트를 작성하기 위한 재생 도구를 제공합니다.또한 JavaScript(Node.js), C#, Groovy, Java, Perl, PHP, Python, Ruby, Scala다수의 인기 프로그래밍 언어로 테스트를 작성할 수 있는 테스트 도메인별 언어(Selenese)도 제공합니다.Selenium은 Windows, LinuxMacOS에서 실행됩니다.Apache License 2.0으로 출시오픈 소스 소프트웨어입니다.

역사

Selenium은 2004년 Jason Huggins에 의해 ThinkWorks의 내부 툴로 개발되었습니다.Hugins는 Paul Hammant가 팀에 합류하기 전에 ThinkWorks의 다른 프로그래머와 테스터들과 합류하여 후에 "Selenium Remote Control"(RC; 셀레니엄 리모컨)이 되는 두 번째 작동 모드의 개발을 주도하였다.그 공구는 그 해에 오픈 소스로 제공되었습니다.

2005년 Dan Fabulich와 Nelson Sproul(Pat Lightbody의 도움을 받아)은 Selenium-RC를 가장 잘 알려진 것으로 바꾸는 일련의 패치를 받아들이겠다고 제안했습니다.같은 회의에서 Selenium의 프로젝트 운영은 위원회로서 계속되며, Huggins와 Hammant는 ThinkWorks의 [5]대표가 된다.

2007년, 허긴스는 구글에 입사했다.Jennifer Bevan과 같은 다른 사람들과 함께, 그는 Selenium RC의 개발과 안정화를 계속했다.동시에 ThinkWorks의 Simon Stewart는 WebDriver라고 불리는 뛰어난 브라우저 자동화 툴을 개발했습니다.2009년 구글 테스트 오토메이션 컨퍼런스 개발자들 간의 회의 후, 두 프로젝트를 병합하고 새로운 프로젝트를 Selenium WebDriver 또는 [6]Selenium 2.0이라고 부르기로 결정하였습니다.

2008년 Philippe Hanrigou(당시 ThinkWorks)는 셀레늄 그리드(Selenium Grid)를 만들었는데, 이 그리드는 임의의 수의 로컬 또는 원격 시스템에서 여러 셀레늄 테스트를 동시에 실행할 수 있는 허브를 제공하여 테스트 실행 시간을 최소화합니다.그리드는 Selenium RC용 내부/프라이빗 Google 클라우드와 유사한 기능을 오픈 소스로 제공했습니다.Pat Lightbody는 이미 HostedQ를 위한 프라이빗 클라우드를 만들었습니다.A'는 고메즈사에 매각했다.

셀레늄이라는 이름은 셀레늄 보충제를 복용하면 수은 중독을 치료할 수 있다고 말하는 수은이라는 경쟁자를 조롱하는 이메일에서 나온 농담에서 유래했다.전자 메일을 받은 다른 사용자가 이름을 가져와서 [7]실행했습니다.

구성 요소들

Selenium은 여러 개의 컴포넌트로 구성되어 있으며, 각 컴포넌트는 웹 어플리케이션 테스트 [8]자동화 개발을 지원하는 특정 역할을 담당합니다.

셀레늄 IDE

Selenium IDE는 Selenium 테스트를 위한 완전한 통합 개발 환경(IDE)입니다.Firefox 애드온Chrome 확장으로 구현됩니다.기능 테스트의 기록, 편집 및 디버깅이 가능합니다.그것은 이전에 셀레늄 레코더로 알려져 있었다.Selenium-IDE는 원래 카사타니 신야에 의해 만들어져 2006년에 Selenium 프로젝트에 기부되었다.셀레늄 IDE는 [9][10][11][12]2018년부터 적극적으로 유지되기 시작했다.

스크립트를 자동으로 기록 및 편집하여 자동 완료를 지원하고 명령을 빠르게 이동할 수 있습니다.스크립트는 Selenium 전용 테스트스크립트 언어인 Selenese로 기록됩니다.Selenese는 브라우저에서 작업을 수행하고(링크를 클릭하고 옵션을 선택) 결과 페이지에서 데이터를 가져오기 위한 명령을 제공합니다.

파이어폭스용 Selenium IDE 2.x 버전은 Firefox 55 업그레이드 후 작동이 중지되어[13] Selenium IDE 3.x로 [14]대체되었습니다.

공식 Selenium IDE 프로젝트 외에도, 두 가지 대체 Selenium IDE 브라우저 확장 기능인 Kantu(오픈 소스 GPL 라이센스)와 Katalon Recorder(오픈 소스)가 활발하게 [15]유지되고 있습니다.

Selenium 클라이언트 API

셀레네어 쓰기 테스트의 대안으로 다양한 프로그래밍 언어로 시험을 작성할 수도 있습니다.그런 다음 Selenium Client API에서 메서드를 호출하여 Selenium과 통신합니다.Selenium은 현재 Java, C#, Ruby, JavaScript, R Python용 클라이언트 API를 제공하고 있습니다.

Selenium 2에서는 새로운 클라이언트 API가 도입되었습니다(WebDriver를 중심 컴포넌트로 사용).단, 이전 API(클래스 Selenium 사용)는 계속 지원됩니다.

셀레늄 리모컨

Selenium Remote Control(RC; 셀레니엄 리모트 컨트롤)은 Java로 작성된 서버이며 HTTP를 통해 브라우저용 명령을 수신합니다.RC는 임의의 프로그래밍 언어로 웹 어플리케이션의 자동 테스트를 작성할 수 있도록 하여 셀레늄을 기존 유닛 테스트 프레임워크에 보다 효과적으로 통합할 수 있도록 합니다.쓰기 테스트를 쉽게 하기 위해 Selenium 프로젝트는 현재 PHP, Python, Ruby, 를 위한 클라이언트 드라이버를 제공하고 있습니다.NET, PerlJava.Java 드라이버는 (Rhino 엔진을 통해) JavaScript와 함께 사용할 수도 있습니다.html 테스트 케이스를 기동하려면 selenium RC 서버의 인스턴스가 필요합니다.즉, 포트가 병렬 [citation needed]실행마다 달라야 합니다.단, Java/PHP 테스트 케이스에서는 1개의 Selenium RC 인스턴스만 [16]연속적으로 실행할 필요가 있습니다.

Selenium Remote Control은 Drived Selenium 또는 Selenium B의 리팩터링으로, Jason이 Selenium의 공동 제작자로 인정받았습니다.원래 버전은 Java의 테스트 언어에서 해당 브라우저에 대한 프로세스를 직접 시작했습니다.NET, Python 또는 Ruby.와이어 프로토콜(당시에는 'Selenese'라고 불림)이 각 언어 포트에 다시 구현되었습니다.Dan Fabulich와 Nelson Sproul의 리팩터(Pat Lightbody의 도움을 받아) 이후 운전 테스트 스크립트와 브라우저 사이에 중간 데몬 프로세스가 있었습니다.그 장점으로는 리모트 브라우저를 구동할 수 있는 기능과 점점 증가하는 일련의 언어에 모든 코드를 이식할 필요성이 감소했습니다.Selenium Remote Control은 2006년에 Drived Selenium 코드 라인에서 완전히 인계되었습니다.'Drived'/'B'와 'RC'의 브라우저 패턴은 응답/요청이었으며, 이후 Comet으로 알려지게 되었다.

Selenium RC는 오랜 기간 동안 Selenium 전체 프로젝트의 대표 테스트 프레임워크 역할을 수행했습니다.또한 Selenium RC는 사용자가 선호하는 프로그래밍 언어를 채택할 수 있는 최초의 자동 웹 테스트 도구입니다.[17][18]

Selenium 2의 출시와 함께 Selenium RC는 공식적으로 Selenium WebDriver를 위해 폐지되었습니다.

Selenium 웹 드라이버

Selenium의 핵심은 Selenium WebDriver입니다.이것은 브라우저 간에 상호 교환이 가능한 명령어를 쓰는 인터페이스입니다.Selenium RC의 후속 모델입니다.Selenium WebDriver는 (Selenese 또는 Client API를 통해 전송되는) 명령어를 받아들여 브라우저로 전송합니다.이것은 브라우저 고유의 브라우저 드라이버를 통해 구현되며, 이 드라이버는 브라우저에 명령을 전송하고 결과를 가져옵니다.대부분의 브라우저 드라이버는 실제로 브라우저 응용 프로그램(Firefox, Google Chrome, Internet Explorer, Safari, Microsoft Edge 등)을 실행하고 액세스합니다.또, 헤드리스 브라우저 HtmlUnit 를 사용해 브라우저를 시뮬레이트 하는 HtmlUnit 브라우저 드라이버도 있습니다.

테스트 실행에 Selenium 서버가 필요했던 Selenium 1과는 달리 Selenium Web Driver는 테스트 실행에 특별한 서버가 필요하지 않습니다.대신 WebDriver는 브라우저 인스턴스를 직접 시작하고 제어합니다.그러나 Selenium Grid는 WebDriver와 함께 사용하여 원격 시스템에서 테스트를 실행할 수 있습니다(아래 참조).WebDriver는 브라우저 기반의 JavaScript 명령어가 아닌 네이티브 운영체제레벨 기능을 사용하여 브라우저를 구동합니다.이렇게 하면 보안 제한 [19]등 네이티브 명령과 JavaScript 명령 간의 미묘한 차이 문제를 피할 수 있습니다.

실제로는 Selenium 2.0 API의 콜 수가 Selenium 1.0 API보다 훨씬 적다는 것을 의미합니다.Selenium 1.0은 다양한 브라우저 조작을 위한 풍부한 인터페이스를 제공하려고 시도했지만 Selenium 2.0은 개발자가 자체 도메인 고유 언어(DSL)를 만들 수 있는 기본 구성 요소를 제공하는 것을 목표로 하고 있습니다.이러한 DSL 중 하나는 이미 존재합니다: 루비 언어로 된 와티르 프로젝트는 훌륭한 디자인의 풍부한 역사를 가지고 있습니다.Watir-webdriver는 Ruby에서 Selenium WebDriver의 래퍼로서 Watir API를 구현합니다.Watir-webdriver는 WebDriver 사양과 HTML 사양에 따라 완전히 자동으로 생성됩니다.

2012년 초, 당시 구글과 함께 있던 사이먼 스튜어트(WebDriver의 발명자)와 모질라의 데이비드 번즈는 W3C와 웹드라이버를 인터넷 표준으로 만들기 위해 협상 중이었다.2012년 7월에 작업 초안이 발표되었고 2018년 [20]6월에 권고안이 발표되었습니다.Selenium WebDriver(Selenium 2.0)는 JavaScript(Node.js), Python, Ruby, Java, Kotlin(프로그래밍 언어), C#에서 완전히 구현 및 지원됩니다.2021년 현재 셀레늄 4가 방출 [21]후보입니다.

다음은 가장 간단한 지시사항입니다.

파이썬
부터 셀렌 수입품 웹 드라이버 부터 셀렌webdriver.common.타고 수입품 타고 부터 셀렌webdriver.common.열쇠들. 수입품 열쇠들. 부터 셀렌웹 드라이버.support.ui 수입품 웹 드라이버 대기 부터 셀렌웹 드라이버.support.expected_conditions 수입품 존재_of_internal_위치  #이 예에서는 Selenium WebDriver 3.13 이후가 필요합니다. 와 함께 웹 드라이버.파이어 폭스() ~하듯이 드라이버:     잠깐만요. = 웹 드라이버 대기(드라이버, 10)     드라이버.얻다("https://google.com/ncr")     드라이버.검색_실행(타고.이름., "q").send_키("실패" + 열쇠들..돌아가다)     첫 번째_결과 = 잠깐만요..까지(존재_of_internal_위치((타고.CSS_SELECTOR, 'h3')))     인쇄물(첫 번째_결과.get_filength(가져오기)("텍스트 콘텐츠"))}} 
자바
수입품 org.openqa.selenium.타고; 수입품 org.openqa.selenium.열쇠들.; 수입품 org.openqa.selenium.웹 드라이버; 수입품 org.openqa.selenium.웹 요소; 수입품 org.openqa.selenium.파이어폭스파이어폭스 드라이버; 수입품 org.openqa.selenium.support.ui.ui.웹 드라이버 대기; Import 스태틱 org.openqa.selenium.support.ui.ui.Expected Conditions.presence Of Element 위치; 수입품 java.time.지속;  일반의 학급 헬로셀레니엄 {      일반의 정적인 무효 주된(스트링[] args) {         웹 드라이버 드라이버 = 신규 파이어폭스 드라이버();         웹 드라이버 대기 잠깐만요. = 신규 웹 드라이버 대기(드라이버, 지속.초수(10));         해라 {             드라이버.얻다("https://google.com/ncr");             드라이버.find 요소(타고.이름.("q")).sendKeys(키 전송)("실패" + 열쇠들..를 입력하십시오.);             웹 요소 첫 번째 결과 = 잠깐만요..까지(존재 Of Element 위치(타고.css 셀렉터('h3')));             시스템..나가..인쇄(첫 번째 결과.get Attribute("텍스트 콘텐츠"));         } 마침내. {             드라이버.멈춰();         }     } } 
C#
사용. 시스템.; 사용. OpenQA.셀레늄; 사용. 오픈QA 셀레니엄파이어 폭스; 사용. 오픈QA 셀레니엄지지하다.UI;  학급 헬로셀레니엄 {     정적인 무효 주된()     {         사용.(IWeb 드라이버 드라이버 = 신규 파이어폭스 드라이버())         {             웹 드라이버 대기 잠깐만요. = 신규 웹 드라이버 대기(드라이버, 시간 범위.시작 초수(10));             드라이버.네비게이션().GoToUrl("https://www.google.com/ncr");             드라이버.발견 요소(타고.이름.("q")).송신 키("실패" + 열쇠들..를 입력하십시오.);             잠깐만요..까지(웹 드라이버 => 웹 드라이버.발견 요소(타고.CSS 셀렉터('h3')).표시됨);             IWeb Element 첫 번째 결과 = 드라이버.발견 요소(타고.CSS 셀렉터('h3'));             콘솔.기입선(첫 번째 결과.GetAttribute(Get Attribute)("텍스트 콘텐츠"));         }     } } 

셀레늄 그리드

Selenium Grid는 테스트를 통해 원격 머신에서 실행되는 웹 브라우저 인스턴스를 사용할 수 있는 서버입니다.Selenium Grid에서는 1대의 서버가 중앙 허브로서 기능합니다.테스트는 허브에 접속하여 브라우저 인스턴스에 액세스합니다.허브에는 브라우저 인스턴스(WebDriver 노드)에 대한 액세스를 제공하는 서버 목록이 있으며 테스트에서 이러한 인스턴스를 사용할 수 있습니다.Selenium Grid를 사용하면 여러 머신에서 병렬로 테스트를 실행할 수 있습니다.또, (각각의 테스트가 아닌) 다른 브라우저 버전과 브라우저 구성을 일원 관리할 수 있습니다.

리모트 브라우저 인스턴스에서 테스트를 실행하는 기능은 여러 머신에 걸쳐 테스트 부하를 분산하고 다른 플랫폼 또는 운영체제 상에서 실행되는 브라우저에서 테스트를 실행하는 데 유용합니다.후자는 테스트에 사용하는 모든 브라우저를 동일한 [22]플랫폼에서 실행할 수 없는 경우에 특히 유용합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Announcing Selenium 4". Retrieved October 26, 2021 – via Selenium.
  2. ^ "Downloads". Selenium.
  3. ^ "The Selenium Browser Automation Project". selenium.dev. March 16, 2020. Retrieved November 1, 2021.{{cite web}}: CS1 maint :url-status (링크)
  4. ^ Abdullaiev, O.A.; Ibrahimova, L. V. (2020). "Review of testing software: Selenium software" (PDF). Вінницький національний технічний університет. УДК 004.457.
  5. ^ "Selenium History". www.selenium.dev. Retrieved August 11, 2021.{{cite web}}: CS1 maint :url-status (링크)
  6. ^ "The Selenium Project". thenewcircle.com. NewCircle. Retrieved June 29, 2014.{{cite web}}: CS1 maint :url-status (링크)
  7. ^ Krill, Paul (April 6, 2011). "Open source Selenium web app test suite to support iPhone and Android". InfoWorld. Archived from the original on May 5, 2011. Retrieved May 9, 2012. Selenium was so named because Huggins, dissatisfied with testing tools on the market, was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software. The name, Selenium, was selected because selenium mineral supplements serve as a cure for mercury poisoning, Huggins explained.
  8. ^ Moizuddin, Khaja (June 7, 2018). "Components of the Selenium Automation Tool". dzone.com. DevOps Zone. Retrieved July 10, 2019.{{cite web}}: CS1 maint :url-status (링크)
  9. ^ "It's back! Selenium IDE Reborn with Dave Haeffner". testingpodcast.com.{{cite web}}: CS1 maint :url-status (링크)
  10. ^ Dave, Tour de (August 6, 2018). "Selenium IDE Is Dead, Long Live Selenium IDE!". Selenium IDE Official Blog. Retrieved November 27, 2019 – via seleniumhq.wordpress.com.{{cite web}}: CS1 maint :url-status (링크)
  11. ^ Colantonio, Joe (November 27, 2018). "Stunning return of Selenium IDE". testguild.com. Retrieved November 27, 2019.{{cite web}}: CS1 maint :url-status (링크)
  12. ^ Sargent, Al (March 19, 2019). "List of new Selenium IDE features". applitools.com. Retrieved October 18, 2021.{{cite web}}: CS1 maint :url-status (링크)
  13. ^ "Firefox 55 and Selenium IDE". Official Selenium Blog. August 9, 2017. Retrieved August 21, 2017.{{cite web}}: CS1 maint :url-status (링크)
  14. ^ "Selenium IDE Download Site". seleniumhq.org. Retrieved May 10, 2018.{{cite web}}: CS1 maint :url-status (링크)
  15. ^ "Selenium IDE rises like a phoenix from the ashes". Automation Technology Blog. Retrieved April 8, 2019.
  16. ^ "Selenium Remote-Control". seleniumhq.org. Retrieved November 13, 2019.
  17. ^ "Selenium 1 (Selenium RC) :: Documentation for Selenium". www.selenium.dev. Retrieved December 20, 2020.
  18. ^ sparkdatabox_author. "Selenium Spark Databox". Retrieved December 20, 2020. {{cite web}}: last=범용명(도움말)이 있습니다.
  19. ^ "The Architecture of Open Source Applications: Selenium WebDriver". aosabook.org. Retrieved February 7, 2016.
  20. ^ Smith, Michael. "WebDriver motors on to W3C Recommendation". W3C Blog. Retrieved September 10, 2018.
  21. ^ "Downloads". selenium.dev. Retrieved September 29, 2021.
  22. ^ "Selenium Grid". The Selenium Browser Automation Project. Retrieved September 9, 2020.

외부 링크