본문 바로가기
Work/개발

업무RPA - 자동 로그인 처리 (Python, pyautogui)

by 라리올리 2021. 10. 15.
반응형

RPA 애플리케이션이 자동으로 CSR을 작성하려면 사내 시스템에 우선 로그인을 해야 합니다. 이번 포스팅에서는 자동으로 로그인하여 CSR 작성하는 웹페이지까지 가는 프로그램을 설명하려고 합니다.

 

 

로그인 Flow 확인

로그인 기능은 프로그램 관점에서 확인하면 아래와 같은 플로우로 흘러갑니다. 

1. 브라우저 열기
2. 입력한 URL로 이동하기
3. ID 입력 칸을 찾아서 ID 입력하기
4. PW 입력칸을 찾아서 PW 입력하기
5. 엔터 혹은 로그인 버튼을 클릭하기

로그인 프로그램 개발하기 with pyautogui 

1. pyautogui 모듈 이란?

자동화 어플리케이션을 개발할 때 pyautogui 모듈 활용을 많이 합니다.  이 모듈은 보통 사람이 컴퓨터로 하는 많은 일들을 대신 처리해 줄 수 있는 API를 제공합니다.

 

1. 마우스와 키보드를 제어하여 원하는 곳을 클릭하게 할 수 있습니다.

2. 값을 사용자에게 받아서 프로그램에게 전달할 수 있습니다. 

3. 스크린샷을 찍고 이미지를 화면에서 찾을 수 있습니다.

4. 프로그램의 창을 찾아서 이동, 크기 조정, 최대화, 최소화 또는 창닫기를 할 수 있습니다.

출처 : https://pyautogui.readthedocs.io/en/latest/

반응형

2. pyautogui, selenium  설치하기

아직 설치하지 않으셨다면, PIP를 활용하여 pyautogui , selenium모듈을 설치하셔야 합니다. 

pip install pyautogui
pip install selenium

혹시 pip 사용 방법을 모르신다면 아래 글을 참고하셔서 설치하시면 됩니다. 아래 글은 pywinauto 설치를 설명하고 있는데, pywinauto 부분만 pyautogui, selenium으로 변경하여 설치하시면 됩니다. 

 

Pywinauto로 파일 업로드 자동화 하기 - 2.Pywinauto 설치하기

파이썬 설치하는 법은 아래 글 참고하세요. python 설치하는법 python은 공식 다운로드 페이지에 가면 다운로드 받을 수 있다. 다운로드 페이지에 가면 아래와 같은 화면을 볼 수 있는데, 노란 Downloa

lariola.tistory.com

이때, pyautogui는 마우스/키보드 제어를, selenium 는 webdriver를 통해 크롬을 제어합니다.

 

3. 로그인 처리 코드

pyautogui를 import 한 뒤 로그인할 사이트 URL, ID, PW를 설정한 후 Chromedriver를 사용하여 크롬에서 로그인 처리하는 코드입니다.

import pyautogui
from selenium import webdriver

Login_URL = "로그인 할 사이트"
ID = "사용하는 ID"
PW = "사용하는 PW"

driver = webdriver.Chrome(executable_path="chromedriver.exe")
## executable_path에는 크롬 드라이버가 설치된 폴더 경로 포함해서 path 설정해 주시면 됩니다.
## 저는 같은 폴더에 있어서 파일명만 작성했습니다.

driver.set_window_size(1600,900)
## 실행될 브라우저 사이즈 설정값입니다.

driver.get(Login_URL)
time.sleep(1) ## 크롬 브라우져가 실행되는 시간 동안 프로그램은 1초 대기 합니다. 

pyautogui.write(ID)  ## pyautogui 모듈 사용하여 ID 입력합니다. 
pyautogui.press("tab") 
pyautogui.write(PW)
pyautogui.press("enter") ## ID, PW 입력 후 엔터키를 눌러서 로그인 처리 합니다. 
time.sleep(1) ## 로그인이 처리 되는 시간 동안 프로그램은 1초 대기 합니다.

 이 코드대로 실행하면, 저희 회사 시스템에서는 로그인 처리가 안되었습니다. 원인을 확인 해 보니, 브라우저로 URL 이동 후 ID 입력하는 textbox로 커서가 이동해 있지 않았습니다.  그래서 ID 입력하기 전에 tab을 한번 하도록 수정했습니다. 수정한 소스 코드는 아래와 같습니다.

pyautogui.press("tab")  ## ID 창응로 이동
pyautogui.write(ID) 
pyautogui.press("tab") 
pyautogui.write(PW)
pyautogui.press("enter")

pyautogui는 press function을 통해서 키보드의 자판들을 컨트롤할 수 있습니다. 코드에서는 tab키와 enter키를 누르도록 한 것을 볼 수 있습니다. 이 외에도 f1~f10, 숫자, num키 등 다양한 키들을 조작할 수 있으며 상세한 값은 PyAutoGUI의 가이드문서중 키보드_키 항목을 참고 하시면 좋을 것 같습니다.

 

반응형

댓글