SSAMKO의 개발 이야기

Selenium 으로 간단한 매크로 만들기 | python 본문

Python

Selenium 으로 간단한 매크로 만들기 | python

SSAMKO 2020. 4. 22. 11:30
반응형

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

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

위 사이트에서 나의 os와 크롬 버전에 맞는 크롬 드라이버를 다운로드 받아줍니다.

(다운로드 방법 상세 안내는 아래 더 보기를 확인해주세요)

더보기

 

* 나의 크롬 버전은 '설정 > chrome 정보'에서 확인할 수 있습니다.

최신 배포 버전은 81
내 chrome 버전과 맞는 driver 선택
내 운영체제에 맞게 선택

 

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

 

teacherSsamko/macro_for_E-semester

온라인 개학을 위한 매크로. Contribute to teacherSsamko/macro_for_E-semester development by creating an account on GitHub.

github.com

 

반응형
Comments