일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 충북
- python
- pymongo
- 깃허브
- gpu 병렬처리
- nocookie
- 알고리즘
- 탐욕 알고리즘
- selenium
- 유튜브
- 리스트
- 구글 드라이브
- G-Suite
- Django
- 파이썬
- flask
- DB
- docker-compose
- venv
- 추천 영상
- 단축어
- List
- Google Drive
- 바로학교
- 그리디 알고리즘
- 링크
- 아이폰
- 코딩
- 장고
- MongoDB
- Today
- Total
SSAMKO의 개발 이야기
Selenium 으로 간단한 매크로 만들기 | python 본문
1. selenium 설치
2. chromedriver 다운로드
3. 페이지 띄우기(e학습터)
4. 로그인
*전제)
- 파이썬 설치
- 파이썬 사용경험(잘 할 필요는 없음)
1. selenium 설치
윈도우 cmd(mac 터미널)에서
pip를 사용하여 selenium을 설치해줍니다.
pip install selenium
윈도우 커맨드 shell에서는 파이썬을 설치해도 기본적으로 pip 명령어를 사용할 수 없습니다.
따라서, 파이썬3 설치 후 커맨드 라인에
py -3 -m ensurepip
위 커맨드를 입력해주어야 pip커맨드를 사용할 수 있게 됩니다.
이후에는 pip install을 이용해 selenium을 설치해주면 됩니다.
2. chromedriver 다운로드
https://chromedriver.chromium.org/downloads
위 사이트에서 나의 os와 크롬 버전에 맞는 크롬 드라이버를 다운로드 받아줍니다.
(다운로드 방법 상세 안내는 아래 더 보기를 확인해주세요)
* 나의 크롬 버전은 '설정 > chrome 정보'에서 확인할 수 있습니다.
3. 페이지 띄우기
# eclass.py
from selenium import webdriver
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
url = 'https://cls4.edunet.net/cyber/cm/mcom/pmco000b00.do'
driver.get(url)
eclass.py의 코드를 다음과 같이 작성하고 실행해주면 자동으로 크롬이 열리면서 해당 url로 접속이 된다.
*executable_path 에는 chromedriver가 있는 경로를 지정해주면 된다. 경로를 쉽게 구하는 방법은 더보기에서 확인
다운로드 된 chromedriver의 속성을 확인하고 '위치'를 복사해서 붙여 넣어주면 된다.
4. 로그인
크롬 개발자 도구를 사용해 로그인 버튼을 찾아준다.
css selector를 이용해 로그인 버튼을 선택하고, 클릭해준다.
driver.find_elements_by_css_selector('a.btn_login')[1].click()
*주의할 점은 find_element_by..가 아니라 find_elements_by.. 즉, 복수형으로 써야 한다는 것이다. (해당 되는 css selector가 두 개 이상인 경우 리스트로 반환해준다.)
아래 사진처럼 a.btn_login을 가지고 있는 태그가 2개 있는데 하나는 화면에 보이지 않아서 클릭을 할 수 없다.(non clickable)
따라서, 두번째 항목을 선택하기 위해 [1]을 지정해준다.
click()은 말그대로 선택된 항목을 클릭해주는 매서드다.
스크립트를 실행하면 로그인 버튼이 클릭되는 걸 확인할 수 있다.
이제 id와 비밀번호를 입력할 차례
학생 계정으로 테스트 할 예정이기때문에
'e학습터 발급계정' 클릭 후 id, password 입력 순서로 진행한다.
1) 로그인 방식 클릭
driver.find_elements_by_css_selector('dd.dd_2')[0].click()
'e학습터 발급계정'은 dd.dd_2로 찾을 수 있고 하나뿐이기때문에 [0]를 선택
*참고) '에듀넷 계정'은 dd.dd_1로 찾을 수 있고 역시 하나.
2) ID,PASSWORD 입력
driver.find_element_by_id('login_id').send_keys('id')
마찬가지로 크롬 개발자 도구로 찾아보면 id input태그에는 다행히도 id값이 들어가있다.(id='login_id')
이럴 경우는 find_element_by_id()로 찾아주는 것이 좋다.
send_keys()는 input안에 주어진 값을 입력해주는 매서드. 'id' 부분에 자신의 ID를 입력해주면된다.
driver.find_element_by_id('password').send_keys("password")
비밀번호도 같은 방법으로 처리한다.
비밀번호 입력이 끝났으면, 로그인버튼을 클릭하는 방법도 있겠지만
엔터키를 눌러 로그인을 시도해보자.
3) 엔터키 입력
엔터키를 입력해주기 위해서는 key모듈을 가져와야한다.
from selenium.webdriver.common.keys import Keys
Keys는 키보드의 기능키 입력을 도와주는 모듈이다.
driver.find_element_by_id('password').send_keys(Keys.ENTER)
Keys.ENTER로 엔터키를 입력해준다.
파일을 실행시켜보면 로그인이 자동으로 되는 걸 확인할 수 있다.
전체 코드
# eclass.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
url = 'https://cls4.edunet.net/cyber/cm/mcom/pmco000b00.do'
driver.get(url)
driver.find_elements_by_css_selector('a.btn_login')[1].click()
driver.find_elements_by_css_selector('dd.dd_2')[0].click()
driver.find_element_by_id('login_id').send_keys('id')
driver.find_element_by_id('password').send_keys('password!')
driver.find_element_by_id('password').send_keys(Keys.ENTER)
git hub
https://github.com/teacherSsamko/macro_for_E-semester
'Python' 카테고리의 다른 글
바로학교 출결점검 v1.1 | 오류 안내 (7) | 2020.04.23 |
---|---|
바로학교 출결관리 프로그램 (8) | 2020.04.23 |
COCI(크로아티아 정보올림피아드) 그리디 알고리즘 문제 해설 | 파이썬 (0) | 2020.04.04 |
그리디 알고리즘(Greedy algorithm) - 동전 지불 문제 | 파이썬 (0) | 2020.04.04 |
파이썬 문자열 포매팅 (string formatting) | python3 (0) | 2020.03.31 |