(python)selenium

2020. 11. 9. 10:40PYTHON

selenium 

 웹브라우저를 컨트롤 하여 웹 자동화 하는 도구 중에 하나이다.

가장 원초적인 자동화는 화면의 좌표를 기준으로 한 자동화

selenium 도구를 이용하는 웹 자동화

윈도우즈의 자동화

작업의 자동화

 

WebDriver.Firefox

 

WebDriver.Chrom

 

WebDriver.le

 

WebDriver.OPera 

 

WebDriver.PhanthomJS PhantomJS

 

CTL 형식의 웹브라우저

 

github.com/mozilla/geckodriver/releases

 

Releases · mozilla/geckodriver

WebDriver for Firefox. Contribute to mozilla/geckodriver development by creating an account on GitHub.

github.com

 

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

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

sites.google.com

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

 

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

 

    find_element_by_id(id)   id 속성으로 요소를 하나 추출한다. 
    find_element_by_name(name)  name속성으로 요소를 하나 추출한다. 
    find_element_by_xpath(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에 해당하는 요소를 하나 추출한다.

 

DOM 내부에 있는 여러개의 요소를 모두 추출하는 메소드 

 

    find_elements_by_css_selector(query) 
    find_elements_by_xpath(query) 
    find_elements_by_tag_name(name) 
    find_elements_by_class_name(name) 
    find_elements_by_partial_link_text(text)

메소드를 이용해서 아무 요소도 찾지 못한 경우 발생하는 예외처리

 

NoSuchElementException

 

DOM 요소에 적용할 수 있는 메소드 / 속성

 

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

 

value가 텍스트 데이터가 아닌 경우 (특수키,방향키 funtion key(f1, f2, f3 .... 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형태로 추출한다. 
creenshot_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            현재 페이지의 타이틀을 추출