Python And Selenium
charsyam@naver.com
Selenium
셀레늄.
브라우저 자동화 도구.
브라우저에 대한 UI 테스트시 사용된다.
http://www.seleniumhq.
org/download/
Selenium 설치
테스트 환경: Linux Ubuntu, Firefox
java -jar selenium-server-standalone-2.35.0.jar
pip install -U selenium
샘플 #1
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
try:
browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]").click()
except NoSuchElementException:
assert 0, "can't find seleniumhq"
browser.close()
시연 #1
나쁜 짓에도 할 수 있을듯...
추석 표 예매?
또는 영화 표 예매?
기차표를 예매한다면
어떤 것들이 필요할까?
1. 브라우저 실행/특정 페이지 이동
2. 폼 전달/특정 태그 선택 후 클릭
3. 경고창
4. select/option 태그 값 변경
5. 종료
브라우저 실행/특정 페이지 이동
1. driver = webdriver.Firefox()
2. driver.get("http://www.korail.com/2012/index.jsp")
특정 버튼 찾아서 클릭
driver.find_element_by_link_text("로그인").click()
Form 채우기
driver.find_element_by_name('txtMember').send_keys
(id)
driver.find_element_by_name('txtPwd').send_keys(pw)
경고창
alert = driver.switch_to_alert()
time.sleep(2)
alert.accept()
적절한 딜레이가 필요
select/option tag
select = driver.find_element_by_name("txtPsgFlg_1")
options = select.find_elements_by_tag_name("option")
for option in options:
if num == option.get_attribute("value"):
option.click()
브라우저 종료
driver.close()
시연2
Tip
1. Selenium IDE를 사용하면 정보를 찾기 쉽다.
2. 적절한 딜레이를 줘야 정상적으로 동작한다.
3. 예외 처리를 잘 해둬야 한다.
결론
1. 이번 기차표 예매는 큰 도움은 안됬음.
- 서버가 뻗어서 일단 예상대로 동작 안함.
2. 페이지 소스가 자주 바뀌면 이에 따라 계속 수
정이 필요함.
3. 그럼에도 불구하고, 배우고 쓸만한 가치가 있
음. 웹 UI 테스트 자동화등
- 실제 서비스 테스트 사례도 많음.

Python andselenium