마우스·키보드 반복 클릭 끝! 파이썬으로 윈도우 작업 자동화하기

마우스·키보드 반복 클릭 끝! 파이썬으로 윈도우 작업 자동화하기 (완성 코드 공개)

파이썬 pyautogui로 마우스와 키보드를 자동으로 조작하는 모습


"매일 아침 회사 시스템에 로그인하고, 메뉴를 클릭하고, 데이터를 조회하고, 화면을 캡처해서 보고서에 붙여넣기"…

파이썬 API가 없는 레거시 사내 시스템, 자동화 기능을 지원하지 않는 프로그램도 마우스와 키보드를 직접 제어하면 자동화할 수 있습니다. pyautogui는 파이썬에서 마우스 이동·클릭, 키보드 입력, 화면 캡처까지 모두 처리할 수 있는 라이브러리입니다. 파이썬을 실행할 수 있는 환경이라면 어떤 윈도우 프로그램도 자동으로 조작할 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install pyautogui pillow

pyautogui는 마우스·키보드 제어 라이브러리이고, pillow는 화면 캡처 기능을 사용할 때 필요한 이미지 처리 라이브러리입니다. 두 가지 모두 설치해야 정상 작동합니다.

⚠️ 중요한 안전장치: pyautogui는 실행 중 마우스를 화면 왼쪽 상단 모서리(0, 0)로 빠르게 이동하면 즉시 실행이 중단됩니다. 스크립트가 의도치 않게 작동할 때 마우스를 화면 모서리로 빠르게 밀어넣으면 강제 중지됩니다. 반드시 기억해두세요.

2단계: 핵심 기능 코드

실전에서 가장 많이 쓰는 기능을 먼저 익혀두면 응용이 쉬워집니다. 아래 코드를 auto_basic.py로 저장하고 실행해 보세요.

import pyautogui
import time

# 안전 설정: 동작 사이에 0.3초 간격 자동 적용
pyautogui.PAUSE = 0.3
# 안전 설정: 화면 모서리에서 즉시 중단
pyautogui.FAILSAFE = True

# ① 현재 마우스 좌표 확인 (자동화할 위치 찾을 때 사용)
x, y = pyautogui.position()
print(f"현재 마우스 위치: ({x}, {y})")

# ② 마우스 이동 (x=500, y=300 위치로 0.5초 동안 이동)
pyautogui.moveTo(500, 300, duration=0.5)

# ③ 마우스 클릭
pyautogui.click(500, 300)          # 왼쪽 클릭
pyautogui.doubleClick(500, 300)    # 더블클릭
pyautogui.rightClick(500, 300)     # 오른쪽 클릭

# ④ 키보드 입력
pyautogui.write("안녕하세요", interval=0.05)  # 텍스트 입력 (interval: 글자 사이 간격)
pyautogui.press("enter")                       # Enter 키 입력
pyautogui.hotkey("ctrl", "c")                 # Ctrl+C (복사)
pyautogui.hotkey("ctrl", "v")                 # Ctrl+V (붙여넣기)
pyautogui.hotkey("alt", "f4")                 # Alt+F4 (창 닫기)

# ⑤ 화면 캡처
screenshot = pyautogui.screenshot()
screenshot.save(r"C:\Users\내이름\Desktop\캡처화면.png")
print("화면 캡처 저장 완료")

3단계: 실전 완성 코드 — 반복 로그인 자동화

가장 많이 쓰는 사례인 사내 시스템 자동 로그인 예시입니다. 아래 코드를 auto_login.py로 저장하세요.

import pyautogui
import time
import subprocess

pyautogui.PAUSE    = 0.5
pyautogui.FAILSAFE = True

# ① 설정
PROGRAM_PATH = r"C:\Program Files\회사시스템\login.exe"  # ← 실행할 프로그램 경로
USERNAME     = "내아이디"       # ← 로그인 아이디
PASSWORD     = "내비밀번호"     # ← 로그인 비밀번호

# ② 좌표 설정 (아래 '좌표 찾는 방법' 참고)
ID_INPUT_POS  = (760, 450)   # ← 아이디 입력창 위치 (x, y)
PW_INPUT_POS  = (760, 520)   # ← 비밀번호 입력창 위치 (x, y)
LOGIN_BTN_POS = (760, 590)   # ← 로그인 버튼 위치 (x, y)

# ③ 프로그램 실행
print("  ▶ 프로그램 실행 중...")
subprocess.Popen(PROGRAM_PATH)
time.sleep(3)   # 프로그램이 완전히 열릴 때까지 대기

# ④ 아이디 입력
print("  ▶ 아이디 입력 중...")
pyautogui.click(ID_INPUT_POS)
pyautogui.hotkey("ctrl", "a")   # 기존 내용 전체 선택
pyautogui.write(USERNAME, interval=0.05)

# ⑤ 비밀번호 입력
print("  ▶ 비밀번호 입력 중...")
pyautogui.click(PW_INPUT_POS)
pyautogui.hotkey("ctrl", "a")
pyautogui.write(PASSWORD, interval=0.05)

# ⑥ 로그인 버튼 클릭
print("  ▶ 로그인 버튼 클릭...")
pyautogui.click(LOGIN_BTN_POS)
time.sleep(2)

print("\n✅ 완료! 자동 로그인 성공")

4단계: 좌표 찾는 방법

코드에서 클릭할 위치의 좌표를 찾아야 합니다. 아래 코드를 find_pos.py로 저장하고 실행하면 3초 카운트다운 후 현재 마우스 위치의 좌표를 출력합니다.

import pyautogui
import time

print("3초 후 마우스 위치를 측정합니다. 측정할 위치에 마우스를 올려두세요.")
for i in range(3, 0, -1):
    print(f"  {i}초...")
    time.sleep(1)

x, y = pyautogui.position()
print(f"\n✅ 현재 마우스 좌표: ({x}, {y})")
print(f"   코드에 이렇게 입력하세요: pyautogui.click({x}, {y})")

자동화할 프로그램을 열어두고 이 코드를 실행한 뒤 3초 안에 마우스를 클릭할 위치로 이동하면 좌표를 알 수 있습니다.


5단계: 자주 발생하는 오류와 해결법

오류 1: 클릭 위치가 매번 달라짐

프로그램 창의 위치나 크기가 실행할 때마다 다르면 좌표가 틀어집니다. 코드 실행 전에 프로그램 창을 항상 같은 위치·크기로 고정하거나, pyautogui.locateOnScreen()으로 이미지 인식 방식을 사용하면 해결됩니다. 이미지 인식 방법은 아래 응용 섹션을 참고하세요.

오류 2: 한글 입력이 안 되거나 깨짐

pyautogui.write()는 영문만 지원합니다. 한글 입력이 필요하면 클립보드를 활용하세요:

import pyperclip
pyperclip.copy("입력할 한글 텍스트")   # 클립보드에 복사
pyautogui.hotkey("ctrl", "v")         # 붙여넣기

pyperclippip install pyperclip으로 설치합니다.

오류 3: FailSafeException 오류로 즉시 종료됨

마우스가 화면 모서리(0, 0)에 닿아 안전장치가 작동한 경우입니다. 의도하지 않은 종료라면 코드의 첫 동작에 time.sleep(2)를 추가해 스크립트 시작 전 마우스를 화면 중앙으로 이동할 시간을 확보하세요.


응용: 화면에서 특정 이미지를 찾아 클릭하고 싶다면

좌표 대신 버튼 이미지를 기준으로 클릭 위치를 찾는 방법입니다. 창 위치가 바뀌어도 정확하게 동작합니다. 먼저 클릭할 버튼을 캡처해서 login_btn.png로 저장해두세요.

import pyautogui
import time

BUTTON_IMAGE = r"C:\Users\내이름\Desktop\login_btn.png"   # ← 버튼 이미지 경로

# 화면에서 이미지 찾기 (찾으면 위치 반환, 없으면 None)
location = pyautogui.locateOnScreen(BUTTON_IMAGE, confidence=0.9)

if location:
    center = pyautogui.center(location)
    pyautogui.click(center)
    print(f"  ✔ 버튼 클릭 완료: {center}")
else:
    print("  ✘ 버튼을 화면에서 찾을 수 없습니다.")
💡 이전 게시글과 결합하면: 사내 시스템에서 자동 로그인 후 데이터를 조회하고, 웹 데이터 자동 수집 편처럼 결과를 엑셀로 저장하거나 카카오톡 자동 발송 편으로 결과를 바로 공유하는 자동화 파이프라인을 만들 수 있습니다.

핵심 요약

  • 준비물: Python + pyautogui + pillow 설치 (pip install pyautogui pillow)
  • 좌표 확인: find_pos.py로 3초 카운트다운 후 원하는 위치의 좌표 측정
  • 안전장치: 마우스를 화면 왼쪽 상단 모서리로 빠르게 이동하면 즉시 중단
  • 한글 입력: pyperclip으로 클립보드 복사 후 Ctrl+V로 붙여넣기
  • 결과: API 없는 사내 시스템, 레거시 프로그램도 마우스·키보드 제어로 자동화 가능

이 코드를 응용하면 반복적인 데이터 입력, 정기 보고서 출력, 화면 자동 캡처 등 클릭이 필요한 모든 작업을 자동화할 수 있습니다.

이 블로그의 인기 게시물

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁