Selenium? 

웹 브라우져를 컨트롤하여 웹 UI를 Automation 하는 도구 중의 하나입니다.  
Selenium의 두 종류가 있습니다.

Selenium Server와 Selenium Client가 있습니다.

Selenium Client은 로컬 컴퓨터의 웹 브라우져를 컨트롤 하기 위해서 Selenium Client를 사용합니다.
Selenium Client는 WebDriver라는 공통 인터페이스(Common interface)와 각 브라우저 타입별(Chorme, exploer, 사파리 등)로 하나씩 있는 Browser Driver로 구성되어 잇습니다. 

Selenium을 설치하겠습니다.

설치를 위해서 윈도우 + R을 눌러 cmd을 쳐 주시기 바랍니다. 

admin> pip install selenium 

 

만약 오류가 뜨게 된다면 환경변수를 설정 안 하셧거나 등의 문제입니다. 그럴 때는 파이썬이 깔려 있는 곳에 디렉터리를 가서 pip install selenium을 쳐 주시기 바랍니다. 

 

다음으로 Selenium 드라이버를 설치했다면 해당 드라이버의 경로를 실행  PATH에 넣어줘야 합니다. 저는 Chrome을 사용하겠습니다.

 

 Firefox : https://github.com/mozilla/geckodriver/releases

Chrome : https://sites.google.com/a/chromium.org/chromedriver/downloads

1번 -> 설정 -> Chrome 정보 

Chrome : https://sites.google.com/a/chromium.org/chromedriver/downloads

다시 들어간 뒤  저는 80. 버전이니 80버전 으로 다운 받겠습니다. 

 

 

 

다운 받은 뒤 압축을 풀어줍니다. 다운로드 폴더에서 실행시키지 말고 다른 곳에서 실행시키기 바랍니다. 

저는 Users/ admin에서 실행시키겠습니다. 

 

Selenium 사용법

결과 

webdriver가 실행되면서 홈페이지가 켜지게 됩니다.

그 페이지가 안 뜰 수 있는데 클릭 한 번 하면 naver.com로 넘어갑니다. 

 

 

Selenium의 특정 요소 및 메서드에 대해서 설명드리겠습니다.

Selenium은 웹페이지 내의 특정 요소를 찾는 많은 메서드를 제공하고 있습니다.

보통 한 요소를 리턴하는 find_element_*(), 복수 요소를 리턴하는 find_elements_*() 메서드로 구분됩니다.

 

예를 들어서 특정태그 id로 검색하는 find_element_by_id(), 특정 태그 name로 검색하는 find_element_by_name(), Css클래스명으로 검색했을 때는 find_element_by_class_name() 등이 있습니다. 

만약 예상되는 결과가 복수이면 find_element_* 대신 find_elements_*를 사용합니다.

 

왼쪽에 있는 Python, PSF, DOCS, PYPI, Jobs, Community를 출력해보겠습니다.

오른쪽은 ctrl + shift + i 를 눌르면 보입니다. 

소스코드는 다음과 같습니다.

from selenium import webdriver
import time


driver = webdriver.Chrome('C:\\Users\\admin\\chromedriver.exe')
# webriver.Chrome()를 호출하여 브라우저를 실행시킵니다. 
driver.get("http://python.org")
# 브라우저를 띄운 상태에서 특정 웹사이트로 이동하기 위해서 get()메서드를 사용

menus = driver.find_elements_by_css_selector("#top ul.menu li")
#div의 top 에 ul class = "menu에서 li을 menus에 넣어라, 

pypi = None
for m in menus:
    if m.text =="PyPI":
        pypi = m
    print(m.text)

pypi.click() # 클릭

time.sleep(5) #5초 대기
browser.quit() #브라우저 종료 

 

결과

 

이상포스터를 마치겠습니다.

+ Recent posts