본문 바로가기
Computer

Python Selenium을 이용한 테스트

by DogBull 2016. 4. 15.

1. 파이썬 설치

Python 2.x 버전을 설치한다. Python 3.x 버전이 최신이고 향후 지속 발전 가능성이 있지만 Python 2.x에서 제작된 수많은 패키지들 중 몇몇이 동작하지 않을 때가 있다.  파이썬 버전을 선택할 때마다 고민을 하지만 주로 2.x 대 버전을 선택하게 된다. ㅠ.ㅠ


설치 경로는 아무래도 상관 없지만, 어디에 설치되는지는 기억해 두는 것이 좋다. 본 문서에서는 아래와 같은 경로에 설치한다.



cmd에서 관련 명령어(python.exe, pip.exe)들을 사용할 수 있도록 %PATH%에 등록해 준다.


특이한 점은 이 설치를 마친다고 해서 cmd에서 바로 python 관련 명령들을 사용할 수 있는게 아니라는 점이다. 설치 완료 후 윈도우를 재부팅하거나 환경변수 창을 한 번 열었다가 닫아준 후 cmd를 다시 실행하면 된다.(리로드??ㅡ,.ㅡ;; 환경변수 창을 열어보면 python 관련 path가 이미 등록되어 있다. )


cmd에서 python 명령을 입력하면 python 인터프리터가 실행된다.

2. Python의 Selenium 패키지 설치

python 인터프리터를 빠져나와 cmd 명령 창에서
pip install selenium
라고 입력하여 python의 selenium 패키지를 설치한다


아래의 그림과 같이 python 인터프리터에서 selenium 패키지가 임포트 된다면 제대로 설치되었다고 볼 수 있다.

3. Selenium WebDriver 다운로드

Selenium WebDriver를 다운로드 받을 차례다. WebDriver는 현재의 운영체제와 웹 브라우저에 알맞는 것을 받아야 한다. WebDriver는 웹 브라우저와 selenium API 사이의 교량 역할을 한다. 테스트될 웹 페이지에 jQuery가 로드되어 있으면 selenium API를 통해서도 그와 관련된 이벤트를 전송할 수 있다. 테스트될 웹 페이지에 특정 css가 로드되어 있으면 이 또한 참조할 수 있다. URL 변경, input 테그의 내용 조작, css 변경 등 해당 웹 페이지의 모든 것을 제어할 수 있다.

본 문서에서는 windows chrome을 위한 WebDriver를 사용할 것이다.



위와 같이 검색 한 후 이리저리 찾아가면, 아래와 같이 다운로드 링크를 발견할 수 있다. 이 문서에서는 2.2.1을 설치해 보았다.
http://chromedriver.storage.googleapis.com/index.html에서 다운받을 수 있다.



다운로드 받은 .zip 파일은 한 개의 .exe 파일을 담고 있다. 압축 해제한 .exe 파일을 기억할 수 있는 적당한 위치에 옮겨 놓는다.
본 문서에서는 아래와 같은 경로에 두었다.
C:\App\Selenium\2.21\chromedriver.exe

4. Python Selenium 동작 확인

이제 기본 작업은 모두 끝났다. 테스트를 수행하는 기본적인 코드를 작성해 보는것으로 마무리해야겠다.
테스트를 수행하는 파이썬 코드 파일을 아래와 같이 작성한다. 파이썬 인터프리터에서 직접 입력해도 된다. 코드의 3라인은 앞서 다운로드받은 각자의 selenium WebDriver 경로를 적어 주어야 한다.



from selenium import webdriver

binary = 'C:/App/Selenium/2.21/chromedriver.exe'
browser = webdriver.Chrome(binary)

browser.get('http://localhost:8080')

browser.quit()


test_runner.py라는 이름으로 바탕화면에 저장하였다.
아래와 같이 test_runner.py를 실행 해 보자.



최초 실행 시 보안 관련 팝업창이 나타나는데, 확인 버튼을 눌러주면 된다.
뭔가 움찔움찔 하면서 크롬이 나타나더니, 이내 사라져 버리는 것을 봤다면 모두 정상적으로 실행된 것이다.

5. Python Selenium 테스트 작성

앞서 작성한 코드는 http 프로토콜로 localhost의 8080에 GET / 요청을 한 것이다. 본 PC는 http 서비스를 하지 않을 뿐만 아니라 localhost:8080가 열려 있지도 않으므로 테스트에 적합하지 않다. 외부 웹페이지를 테스트 해 보도록 하겠다.
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

binary = 'C:/App/Selenium/2.21/chromedriver.exe'
browser = webdriver.Chrome(binary)

browser.get('http://google.co.kr')

search = browser.find_element_by_name('q')
search.send_keys('google')
search.send_keys(Keys.RETURN)

time.sleep(5)

browser.quit()


대충 감이 오는 바와 같이 'http://google.co.kr'에 접속 하여 name이 'q'로 된 element를 찾고, 그 element에 'google'라는 문자열을 전송 한다. 그리고 RETURN키를 전송한다. 결과가 너무 빨리 지나가기 때문에 5초 동안은 기다렸다가 브라우저를 닫는다. 최대 5초 동안 아래와 비슷한 내용을 볼 수 있다.



'Computer' 카테고리의 다른 글

color ramp generator  (0) 2019.12.18
클라우드에 pfsense 설치(가비아 클라우드)  (0) 2019.04.05
iOS WebGL  (0) 2013.03.11
x86osx 10.8.2, Novabench, E3-1230v2  (0) 2013.03.05
for OpenGL Math.  (0) 2008.09.02