geckodriver selenium tutorial
GeckoDriver Selenium 자습서 : Selenium에서 Gecko (Marionette) 드라이버 사용 방법 알아보기
GeckoDriver가 무엇인지 이해하려면 먼저 Gecko와 웹 브라우저 엔진에 대해 알아야합니다. 이 튜토리얼은 GeckoDriver와 관련된 거의 모든 기능을 다루므로 전체 개요를 제공합니다.
먼저 Gecko가 무엇이며 웹 브라우저 엔진이 무엇인지 먼저 알려주십시오.
학습 내용 :
- Gecko는 무엇입니까?
- 웹 브라우저 엔진이란 무엇입니까?
- GeckoDriver 란 무엇입니까?
- Selenium에 GeckoDriver가 필요한 이유는 무엇입니까?
- Selenium Project에서 GeckoDriver를 사용하는 방법은 무엇입니까?
- GeckoDriver 및 TestNG
- 시스템의 PATH 환경 변수에 경로를 추가하는 단계
- Gecko 드라이버가없는 문제
- GeckoDriver에 대한 추가 정보
- 결론
- 추천 도서
Gecko는 무엇입니까?
Gecko는 웹 브라우저 엔진입니다. Gecko가 필요한 여러 응용 프로그램이 있습니다. 특히 Mozilla Foundation 및 Mozilla Corporation에서 개발 한 응용 프로그램입니다. Gecko는 많은 오픈 소스 소프트웨어 프로젝트에도 필요합니다. Gecko는 C ++ 및 JavaScript로 작성되었습니다.
최신 버전도 Rust로 작성되었습니다. Gecko는 무료 오픈 소스 웹 브라우저 엔진입니다.
웹 브라우저 엔진이란 무엇입니까?
웹 브라우저 엔진은 소프트웨어 프로그램 일뿐입니다. 이 프로그램의 주요 기능은 콘텐츠 (예 : HTML, XML, 이미지) 및 정보 형식 (예 : CSS)을 수집하고이 형식화 된 콘텐츠를 화면에 표시하는 것입니다. 웹 브라우저 엔진은 레이아웃 엔진 또는 렌더링 엔진이라고도합니다.
웹 브라우저, 이메일 클라이언트, 전자 책 리더, 온라인 도움말 시스템 등과 같은 애플리케이션은 웹 콘텐츠를 표시해야합니다. 그리고 웹 컨텐츠를 표시하려면 웹 브라우저 엔진이 필요하며 이는 이러한 모든 애플리케이션의 일부입니다. 웹 브라우저마다 다른 웹 브라우저 엔진이 있습니다.
다음 표는 웹 브라우저와 이들이 사용하는 웹 브라우저 엔진을 보여줍니다.
Gecko는 에뮬레이션없이 다음 운영 체제에서 실행됩니다.
- 윈도우
- 맥 OS
- 리눅스
- BSD
- 유닉스
Symbian OS에서는 실행할 수 없습니다.
GeckoDriver 란 무엇입니까?
GeckoDriver는 Firefox 브라우저에 대한 연결 링크입니다. Selenium의 스크립트 . GeckoDriver는 HTTP API를 제공하는 Gecko 기반 브라우저 (예 : Firefox)와의 통신을 돕는 프록시입니다.
Selenium에 GeckoDriver가 필요한 이유는 무엇입니까?
Firefox (버전 47 이상)는 일부 변경 사항을 적용했으며 일부 보안상의 이유로 타사 드라이버가 브라우저와 직접 상호 작용하는 것을 허용하지 않습니다. 따라서 최신 버전의 Firefox에서는 Selenium2를 사용할 수 없습니다. 그래서 우리는 Selenium3이 필요합니다.
Selenium3에는 Marionette Driver가 있습니다. Selenium3은 GeckoDriver에 불과한 프록시를 사용하여 Firefox 브라우저와 직접 상호 작용할 수 있습니다.
Selenium Project에서 GeckoDriver를 사용하는 방법은 무엇입니까?
- 최신 버전이 있다고 생각해 보겠습니다. 셀레늄 WebDriver 그리고 Firefox 브라우저.
- 그런 다음 GeckoDriver를 여기 . 나중에 컴퓨터에 적합한 버전을 선택하십시오.
- 파일의 압축을 풉니 다 압축 폴더에서
- 다음을 통해 프로젝트에 Selenium3 libs의 참조를 추가하십시오. 프로젝트 => 빌드 경로 => 빌드 경로 구성 => 라이브러리 => 외부 Jar 추가를 마우스 오른쪽 버튼으로 클릭하십시오.
- 고르다 Lib 폴더 => 클릭 Clt + A => 열기 클릭 .
- 당신 후 클릭 열기 , 다음 창이 표시됩니다.
- 그런 다음 확인을 클릭하십시오.
- 이제 코드를 작성하고 시스템 속성을 사용하여 GeckoDriver 경로를 지정하겠습니다.
- 코드에 아래 줄을 추가하십시오.
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( 추출 된 파일의 주소를 복사하는 방법. – (키보드에서 'Shift'를 누르고 파일을 마우스 오른쪽 버튼으로 클릭하면 옵션이 표시됩니다. '파일 주소 복사'))
** ( 이 복사 붙여 넣은 경로에 이중 백 슬래시가 있는지 확인하십시오. 그렇지 않으면 코드에 구문 오류가 발생합니다.)
예를 들어 보자
예
다음은 Firefox 브라우저에서 Google 웹 페이지를 열고 웹 페이지의 제목을 확인하는 간단한 스크립트입니다.
코드 1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
코드 이해
# 1) import org.openqa.selenium.WebDriver- 여기에서는 WebDriver 인터페이스에 대한 모든 참조를 가져옵니다. 나중에이 WebDriver 인터페이스는 새 브라우저를 인스턴스화하는 데 필요합니다.
# 2) import org.openqa.selenium.firefox.FirefoxDriver- 여기에서는 FirefoxDriver 클래스에 대한 모든 참조를 가져옵니다.
#삼) setProperty (문자열 키, 문자열 값)- 여기서는 Key라고하는 속성의 이름과 Value라고하는 경로를 제공하여 시스템 속성을 설정합니다.
키 -시스템 속성의 이름 (예 : webdriver.gecko.driver .
값 – Gecko Driver의 exe 파일 주소.
# 4) WebDriver 드라이버 = new FirefoxDriver () – 이 코드 줄에서는 WebDriver의 참조 변수 '드라이버'를 만들고이 참조 변수는 FirefoxDriver 클래스를 사용하여 시작됩니다. 확장 및 플러그인이없는 Firefox 프로필은 Firefox 인스턴스와 함께 시작됩니다.
# 5) get ( 'URL')- 이 Get 메서드를 사용하여 브라우저에서 지정된 URL을 열 수 있습니다. 이 Get 메서드는 WebDriver의 참조 변수 (예 : 드라이버)를 사용하여 호출됩니다. 문자열은 Get 메서드로 전달됩니다. 즉, 애플리케이션 URL이이 Get 메서드로 전달됩니다.
# 6) manage (). window (). maximize ()- 이 코드 줄을 사용하여 브라우저 창을 최대화합니다. 브라우저가 지정된 URL을 열 자마자이 줄을 사용하여 최대화됩니다.
# 7) getTitle () – 이 코드 줄을 사용하여 웹 페이지의 제목을 찾을 수 있습니다. 이 메서드는 WebDriver의 참조 변수 'driver'를 사용하여 호출되기도합니다. 이 제목을 문자열 변수 'appTitle'에 저장합니다.
# 8) 비교 – 여기서 우리는 appTitle을 비교하고 있습니다. driver.getTitle () 방법) 및 expTitle ( 'Google') If 문을 사용합니다. 단순한 If-else 문입니다. 'If'조건이 만족되면 'Verification Successful'메시지를 인쇄하고 그렇지 않으면 'Verification Failed'메시지를 인쇄합니다.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () – 이 코드 줄은 브라우저를 닫습니다. 이 줄은 현재 창만 닫습니다.
# 10) System.exit (0) – 이 코드 행은 Java Virtual Machine 실행을 종료하는 데 사용됩니다. 따라서이 줄 앞에 열려있는 모든 창이나 파일을 닫는 것이 좋습니다.
GeckoDriver 및 TestNG
코드에는 큰 차이가 없지만 여기에 참조 용으로 코드를 추가합니다.
예:
예를 들어 보겠습니다. 우리의 예는 Google.com 웹 페이지를 열고 제목을 가져와 인쇄하는 것입니다.
Code2 :
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
TestNG 코드를 작성하는 동안 기억해야 할 사항 :
#1) 이전 예제와 동일한 f () 함수 내에서 System.setProperty (String key, String value) 메서드를 사용합니다. 이 예에서는 main 함수에 작성했습니다. 그러나 TestNG에는 주요 () 기능이 없습니다. 함수 외부에서 작성하면 구문 오류가 발생합니다.
#두) 기억해야 할 두 번째로 중요한 것은 System.exit (0)입니다. TestNG 스크립트에이 코드 줄을 추가 할 필요가 없습니다. 한 가지 이유가 있습니다. TestNG 스크립트를 실행 한 후 생성 된 보고서와 결과를 볼 수있는 출력 폴더가 생성됩니다. 스크립트에 System.exit (0)을 추가하면이 폴더 (출력 폴더)가 가져 오지 않습니다. 생성되고 보고서를 볼 수 없습니다.
시스템의 PATH 환경 변수에 경로를 추가하는 단계
- Windows 시스템에서 내 컴퓨터 또는이 PC를 마우스 오른쪽 버튼으로 클릭합니다.
- 속성을 선택합니다.
- 고급 시스템 설정을 선택합니다.
- 환경 변수 버튼을 클릭합니다.
- 시스템 변수에서 PATH를 선택합니다.
- 편집 버튼을 클릭합니다.
- 새로 만들기 버튼을 클릭하십시오.
- GeckoDriver 파일의 경로를 붙여 넣습니다.
- 확인을 클릭하십시오.
Gecko 드라이버가없는 문제
아래와 같은 문제가 발생할 수 있습니다.
#1) 이전 버전의 Firefox 및 Selenium3을 사용하는 경우 다음 예외가 발생합니다.
.bin 파일을 마운트하는 방법
스레드 'main'java.lang.IllegalStateException의 예외
#두) 최신 버전의 Firefox와 이전 버전의 Selenium을 사용하는 경우 다음 예외가 발생합니다.
org.openqa.selenium.firefox.NotConnectedException : 45000ms 후 포트 7055에서 호스트 127.0.0.1에 연결할 수 없음
#삼) 최신 버전의 Firefox 및 WebDriver를 사용하고 있지만 GeckoDriver를 사용하지 않는 경우 다음 예외가 발생합니다.
스레드 'main'의 예외 java.lang.IllegalStateException : 드라이버 실행 파일의 경로는 webdriver.gecko.driver 시스템 속성으로 설정해야합니다. 자세한 내용은 여기 .최신 버전은 다음에서 다운로드 할 수 있습니다. 여기 .
GeckoDriver에 대한 추가 정보
우리가 알고 있듯이 GeckoDriver는 HTTP API를 제공하는 Gecko 기반 브라우저 (예 : Firefox)와 통신하는 데 도움이되는 프록시입니다.
이 HTTP API는 WebDriver 프로토콜을 사용하여 이해할 수 있습니다. WebDriver 프로토콜에는 로컬 끝, 원격 끝, 중간 노드 및 끝점 노드를 포함하는 일부 노드가 있습니다. 이러한 노드 간의 통신은 WebDriver 프로토콜에 설명되어 있습니다.
로컬 끝은 WebDriver 프로토콜의 클라이언트 쪽입니다. 원격 끝은 WebDriver 프로토콜의 서버 측을 의미합니다. 중간 노드는 프록시의 역할을 수행합니다. 엔드 포인트 노드는 사용자 에이전트 또는 유사한 프로그램에 의해 적용됩니다.
WebDriver에서 GeckoDriver로 보낸 명령과 응답은 Marionette 프로토콜로 변환 된 다음 GeckoDriver에 의해 Marionette Driver로 전송됩니다. 그래서 우리는 GeckoDriver가이 두 WebDriver와 Marionette 사이의 프록시 역할을한다고 결론지었습니다.
마리오네트는 서버 부분과 클라이언트 부분의 두 부분으로 나뉩니다. 클라이언트 부분에서 보낸 명령은 서버 부분에서 실행됩니다.
이 명령 실행 작업은 브라우저 내에서 수행됩니다. Marionette는 gecko 구성 요소 (Marionette 서버)와 외부 구성 요소 (Marionette Client라고 함)의 조합 일뿐입니다. GeckoDriver는 Rust 프로그래밍 언어로 작성되었습니다.
결론
GeckoDriver는 Selenium 스크립트와 Firefox와 같은 Gecko 기반 브라우저 사이의 중간 요소입니다.
GeckoDriver는 Gecko 기반 브라우저 ( 예 : Firefox). Firefox (버전 47 이상)는 일부 변경을 수행하여 타사 드라이버가 브라우저와 직접 상호 작용하도록 지원하지 못하게했습니다.
이것이 GeckoDriver를 사용해야하는 주된 이유입니다. 스크립트에서 GeckoDriver를 사용하는 가장 쉬운 방법은 다음을 사용하는 것입니다. System.set 속성. (System.setProperty ( 'webdriver.gecko.driver', 'Gecko 드라이버 파일의 경로')).
GeckoDriver를 처음 사용하십니까? 이 GeckoDriver Selenium에서 오늘 새로운 것을 배웠습니까? 아니면 GeckoDriver에 대해 공유 할 흥미로운 점이 있습니까? 아래 댓글 섹션에 의견을 자유롭게 표현하십시오.
추천 도서
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- 예제와 함께 텍스트 자습서로 셀레늄 찾기 요소
- 첫 번째 WebDriver 스크립트 구현 – Selenium WebDriver Tutorial # 10
- Selenium WebDriver에서 경고 / 팝업을 처리하는 방법-Selenium Tutorial # 16
- Eclipse로 WebDriver 전체 설정 및 설치 – Selenium Tutorial # 9
- 초보자를위한 심층 이클립스 튜토리얼
- 효율적인 Selenium 스크립팅 및 문제 해결 시나리오 – Selenium 자습서 # 27