<시작>
간단한 WebTool들의 Automation을 위해 cPAMIE를 통한 Internet Explorer의 Control을 많이 이용함
하지만, Internet Explorer의 Automation을 도와주는 cPAMIE는 다음 문제를 가지고 있다.
- 하위 호환성 문제 (cPAMIE for Python 2.4와 2.6의 문법 및 동작이 다름)
- COM(Component Object Model)을 통해 Internet Explorer과 통신하기 때문에 Windows 환경에 종속적
- 고급적인 Browser Control을 위해서는 COM에서 사용하는 함수를 알아야 함
이를 해결하기 위해 다양한 Platform에서 동작하는 WebBrowser Control (Automation) Tool인 Selenium을 이용
<Firefox 3.0.x 설치>
<Selenium-Core XPCom 및 Selenium-Core Server의 설치>
Selenium-CoreXPI : (Firefox Module이므로 Firefox에서 설치)
Selenium-RC : 해당 파일을 다운 받아 selenium-server-1.0-beta-2 폴더만을 압축을 풀어 특정 폴더에 복사
<Selenium-Core Server의 실행>
Windows나 리눅스/Mac의 Terminal을 열어 selenium-server의 압축을 푼 폴더로 이동하여 해당 명령을 실행함으로써 Server를 가동한다.
<Python-SeleniumRC Module의 설치>
- easy_install을 통해 SeleniumRC Client-Driver Python Module를 설치한다.
<Script Test 예제 (Google 검색)>
- 다음 스크립트 파일을 Python에서 Test 해보도록 한다.
import selenium
# Selenium Connection 인스턴스 생성
a = selenium.selenium("localhost", 4444, "*firefox", "http://www.google.com")
# 해당 인스턴스 정보에 따라 Firefox에 창을 생성
a.start()
# http://www.google.com을 기준으로 /의 위치의 문서 열기 -> http://www.google.com/
a.open("/")
# q라는 form input 개체안에 SearchKeyword라는 단어를 입력한다
a.type("q", "SearchKeyword")
# BtnG 이름을 가진 버튼 클릭 (Google의 폼 전송 버튼이 BtnG)
a.click("btnG")
# 검색결과창의 HTML 소스를 긁어온다.
source = a.get_html_source()
# 창 닫기
a.close()
# 인스턴스 해제 및 Firefox의 종료
a.stop()