- Today
- Total
Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 채용문제
- 코딩문제
- 셀레니움
- 파이썬 입문
- 알고리즘 강좌
- 크롤링
- 대학시험
- 파이썬3
- 면접 파이썬
- 코딩시험
- 프로그래밍
- 파이썬 강좌
- 자료구조 강의
- 자료구조
- 파이썬 강의
- Crawling
- python 중간고사
- gdrive
- 쉬운 파이썬
- python data structure
- 파이썬 자료구조
- 알고리즘
- 알고리즘 강의
- 파이썬활용
- c언어
- 기말시험
- 파이썬
- selenium
- 파이썬 알고리즘
- 중간시험
Notice
반원 블로그
3. selenium : 웹 드라이버 제어를 통한 자동화 본문
개요
- 웹 브라우저에 맞는 웹 드라이버를 이용한 자동화
- 각 브라우저마다 해당 드라이버가 존재한다.
- 레퍼런스 : 참조
운영 OS
- 윈도우, 맥
기타
- 크롬드라이버 다운로드 : 참조
- 예전 selenium코드를 참조해야할 때 주의해야할 점은 현재 버전(2.0)은 WebDriver를 이용한 제어이기 때문이다. 따라서 코드상에서 WebDriver를 생성할 때 실제 WebDriver파일을 넣어주지않는다면 Selenium 1.0 기준으로 작성된 것이니 수정해야한다.
- Selenium 1.0 + 웹 드라이버 = Selenium 2.0 : 참조
- 위의 링크에 웹 브라우저마다의 웹 드라이버 이름을 확인할 수 있다.
- 해당 링크에서 웹 브라우저마다의 웹 드라이버 다운로드 링크가 있다.참조
코드(함수, 변수)
driver = webdriver.Chrome('chromedriver')
driver.get("https://www.youtube.com/")
driver.implicitly_wait(100)
implicitly_wait(암묵적 대기)는 즉시 사용할 수없는 요소를 찾으려고 할 때 WebDriver에 일정 시간 동안 DOM을 폴링하도록 지시합니다. 기본 설정은 0. 일단 설정되면 WebDriver 오브젝트가 작동하는 동안 계속 적용됩니다. 그 외에는 WebDriverWait(명시적 대기)가 존재한다.참조
마우스,키보드 제어(ActionChains)
- ActionChains은 마우스 움직임, 마우스 버튼 동작, 키 누름 및 상황에 맞는 메뉴 상호 작용과 같은 낮은 수준의 상호 작용을 자동화하는 방법
- 전체 레퍼런스 : 참고
- click(on_element=None) : 참고
- click_and_hold(on_element=None) : 참고
- double_click(on_element=None) : 참고
- drag_and_drop(source, target) : 참고
- key_down(value, element=None) : 참고
- key_up(value, element=None) : 참고
- send_keys(*keys_to_send) : 참고
요소(Element)에 접근하는 방법
- Locating by Id
- Locating by Name
- Locating by XPath
- Locating Hyperlinks by Link Text
- Locating Elements by Tag Name
- Locating Elements by Class Name
- Locating Elements by CSS Selectors
특수키 전송을 하려면?
from selenium.webdriver.common.keys import Keys
연습 예제 1
#크롬 창 활성화
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
#자동화 웹 브라우저 활성화
driver = webdriver.Chrome('./chromedriver')
#사이트 접속
driver.get('https://www.naver.com/')
driver.implicitly_wait(200) #사이트 활성화 기다리기
#xpath를 이용한 요소 찾기
search = driver.find_element_by_xpath('//*[@id="query"]') #네이버 검색창
search.send_keys('디랩')
search.send_keys(Keys.ENTER)
#자동종료
time.sleep(5)
driver.close()
xpath란?
- XPath란 XML Path Language를 의미
- XPath는 XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어입니다.
- XPath는 W3C 표준 권고안으로, XSLT와 XPointer에 사용될 목적으로 만들어졌습니다.
- XML DOM에서 노드를 검색할 때에도 사용할 수 있습니다.
HTML 과 XML
- HTML과 XML은 마크업 언어라는 점에서 같으나, 목적(데이터 표현 VS 데이터 교환)이 달라서 발전방향도 다르다.
- HTML은 정해진 태그만 XML은 사용자가 태그를 정의하여 사용할 수 있다.
- HTML은 인터넷 웹 환경에서 작동하는 언어라면 XML은 특정 환경에 제한되있지 않다.
- HTML은 데이터와 표현(웹 브라우저에 반영)을 동시에, XML은 데이터의 의미만 존재한다.
결론적으로 HTML도 XML과 구조상은 유사하며 XPATH방식으로 특정 태그의 경로를 표현할 수 있다.
XPATH 표현법
연습 예제 2
from selenium import webdriver
#열기
driver = webdriver.Chrome('./chromedriver')
#사이트 접속
driver.get('http://zzzscore.com/1to50')
driver.implicitly_wait(200) #사이트 활성화 기다리기
num = 1 #찾아야될 숫자
while num <= 50:
#각 버튼 추출
btns = driver.find_elements_by_xpath('//*[@id="grid"]/div[*]')
# print(len(btns))
# print(btns[0].text)
#정답 찾아서 클릭
for btn in btns:
if btn.text == str(num) : #"1"
btn.click()
num += 1
break
추가 참고
'2018~ > Python Skill Up' 카테고리의 다른 글
6. requests 모듈 - REST API 사용법, curl을 python requests로 변환방법 (0) | 2019.09.06 |
---|---|
5. 클래스 - 기초 정의 및 인스턴스 생성 (0) | 2019.09.06 |
4. rest api (1) - 급식 데이터 조회 (0) | 2019.09.06 |
파이썬 가상환경 개요 설명 (0) | 2019.09.06 |
2. pyautogui : 키보드 마우스 제어 패키지 (0) | 2019.09.05 |
1. 라이브러리, 패키지, 모듈, 외장 함수, 내장함수 (0) | 2019.09.05 |
0. python skillup track1 환경 설정 (0) | 2019.09.05 |
os 모듈 사용 예제, sys 인수 (0) | 2019.09.02 |
Comments