[파이썬] 셀레니움

    Selenium

    • 가장 원초적인 자동화는 화면의 좌표를 기준으로 한 자동화
    • Selenium 도구를 이용하는 웹 자동화
    • 윈도우즈의 자동화
    • 작업의 자동화

     

     

    웹드라이버 구성

    WebDriver.Firefox : 파이어폭스

    WebDriver.Chrom : 크롬

    WebDriver.ie : 익스플로어

    WebDriver.Opera : 오페라

    WebDriver.PhantomJS : PhantomJS 브라우저

     

     

    Selenium Client 설치

     

    pip install selenium

     

    Firefox 드리아버 설치

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

     

    크롬 드라이버 설치

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

     

    Downloads - ChromeDriver - WebDriver for Chrome

    WebDriver for Chrome

    sites.google.com

    크롬을 사용하는 중이므로, 크롬드라이버 설치화면으로 접속했습니다.

    버전은 자신이 사용하고 있는 크롬버전하고 맞추어서 설치 진행했습니다.

    저는 86.0.4240.22 를 사용하는 중이므로 86버전으로 설치하였습니다.

    크롬의 버전 확인은 우측상단 위의 ... 을 누르시면 도움말을 통해 확인 할 수 있습니다.

     

     

    PhantomJS 다운로드

    http://phantomjs.org

     

    PhantomJS 사이트에 들어가면 아래와 같은 화면이 나옵니다.

    여기서 install 설치 누릅니다.

    알맞는 os를 눌러서 설치 진행 하시면 됩니다.

     

     

     

     

    Selenium으로 dom요소를 선택하는 방법

     

    -DOM 내부에 있는 여러개의 요소들 중에서 처음 찾아지는 요소를 추출하는 매소드

    메소드 기능
    find_element_by_id(id) id 속성으로 요소를 하나 추출한다
    find_element_by_name(name) name속성으로 요소를 하나 추출한다.
    find_element_by_css_selector(query) CSS 선택자로 요소를 하나 추출한다.
    find_element_by_XPATH(QUERY) XPath를 지정해 요소를 하나 추출한다.
    find_element_by_tag_name(name) 태그 이름이 name에 해당하는 요소를 하나 추출한다.
    find_element_by_link_text(text) 링크 텍스트로 요소를 하나 추출한다.
    find_element_by_partial_link_text(text) 링크의 자식요소에 포함돼 있는 텍스트로 요소를 하나 추출한다.
    find_element_by_class_name(name) 클래스 이름이 name에 해당하는 요소를 하나 추출하낟.

     

    위의 메소드를 이용해서 어떠한 요소도 찾지 못하는 경우에 발생하는 예외는

    NoSuchElementException

     

     

    -DOM 요소에 적용할 수 있는 메소드 , 속성들, 메소드들

    메소드 기능
    clear() 글자를 입력할 수 있는 요소의 글자를 지운다.
    click() 요소를 클릭한다.
    get_attribute(name) 요소의 속성 중에 name에 해당되는 속성의 값을 추출한다.
    is_displayed() `요소가 화면에 추출되는지 확인한다.
    is_enabled() 요소가 활성화 되었는지 확인한다.
    is_selected() 체크박스 등의 요소가 선택 상태인지 확인한다
    screenshot(filename) 화면을 캡처해서 filename으로 저장한다.
    send_keys(value) 키를 입력한다. 일반적으로 text 데이터를 보낸다.

     

     

     

    value가 텍스트 데이터가 아닌 경우(특수키 : 방향키, 펑션키(f1, f2 … f12), enter, tab, control…)

     

    즉, 특수키를 사용해야 하는 경우에는 별도의 모듈을 사용해야 한다.

    from selenium. Webdriver.common.keys import keys

     

    • 방향키 : ARROW_DOWN / ARROW_LEFT / ARROW_RIGHT / ARROW_UP
    • BACKSPACE / DELETE / HOME / END / INSERT
    • ALT / COMMAND / CONTROL / SHIFT
    • ENTER / ESCAPE / SPACE / TAB
    • F1 / F2 / F3 / F4 ..... / F12

     

     

    submit() 입력 양식을 전송한다.

    value_of_css_property(name) name에 해당하는 CSS 속성 값을 추출한다.

     

     

    속성들

    속성명 속성 기능
    id 요소 ID 속성
    location 요소의 위치
    parent 부모 요소
    rect 크기와 위치정보를 가진 딕셔너리 자료형을 리턴한다.
    screenshot_as_base64 스크린샷을 base64형태로 추출한다.
    screenshot_as_png 스크린샷을 PNG형식의 바이너리로 추출한다.
    size 요소의 크기
    tag_name 테그 이름
    text 요소내부의 글자

     

     

    PhantomJS 용 메소드와 속성

     

     

    add_cookie(cookie_dict) 쿠키 값을 딕셔너리 형식으로 지정

     

     

    >>

    driver.add_cookie({'name'.'kim', 'value', 'test'})

    driver.add_cookie({'name':'kim', 'value':'test', 'path':'/')}

    driver.add_cookie({'name':'kim', 'value':'test', 'path':'/', 'secure':True})

     

     

    back() / forward() 이전 페이지 또는 다음 페이지로 이동

    close() 브라우저를 닫는다.

    current_url 현재 url을 추출한다.

     

    delete_all_cookies()  모든 쿠키를 제거한다.

    delete_cookie(name) 특정 쿠키를 제거한다.

    get_cookie(name) 특정 쿠키를 읽는다.

    get_cookies() 모든 쿠키 값을 추출한다.

     

     

    execute(command, params)   브라우저의 고유 명령어를 실행

    get(url)         웹 페이지를 읽어들인다.

    get_screenshot_as_file(filename)   스크린샷을 파일로 저장

    get_screenshot_as_png      PNG형식으로 스크린샷의 바이너리 추출

    save_screenshot(filename)   스크린샷을 저장

     

     

    implicitly_wait(sec)      최대 대기시간을 초 단위로 지정해서 처리가 끝날 때 까지 대기

    quit()            드라이버를 종료시켜서 브라우저를 닫는다.

    title            현재 페이지의 타이틀을 추출

     

    반응형

    댓글

    Designed by JB FACTORY