파이썬 자동화 라이브러리 (Python Automation)

한눈에 보기

파이썬 자동화 라이브러리는 마우스와 키보드 입력, 화면 인식, 브라우저 조작을 코드로 수행하는 도구다. PyAutoGUI, Selenium, pywinauto의 접근 방식 차이와 선택 기준, 주의점을 정리한다.

최종 업데이트 2026.09.17

파이썬(Python) 자동화 라이브러리는 마우스와 키보드 입력, 화면 인식, 브라우저 조작 같은 반복 작업을 코드로 대신 수행하게 해 주는 도구들을 말한다. 대표적으로 PyAutoGUI, Selenium, pywinauto 등이 있으며, 각각 화면 좌표 기반 GUI 제어, 웹 브라우저 자동화, 운영체제 위젯 단위 제어라는 서로 다른 접근 방식을 취한다. 어떤 대상을 자동화하느냐에 따라 알맞은 라이브러리를 고르는 것이 핵심이다.

자동화 접근 방식의 세 갈래

GUI 자동화는 크게 세 가지 층위에서 이뤄진다. 첫째는 화면 좌표와 이미지 매칭에 의존하는 방식으로, 대상 프로그램의 종류를 가리지 않지만 해상도나 UI 변경에 취약하다. 둘째는 브라우저의 자동화 프로토콜을 이용하는 방식으로, 웹 페이지의 문서 객체 모델(DOM, Document Object Model)에 직접 접근하므로 정확하고 안정적이다. 셋째는 운영체제의 접근성 API를 통해 버튼이나 텍스트 상자 같은 위젯을 직접 다루는 방식이다. 세 층위의 대표 라이브러리가 순서대로 PyAutoGUI, Selenium, pywinauto다.

PyAutoGUI로 하는 화면 제어

PyAutoGUI는 마우스 이동과 클릭, 키보드 입력, 스크린샷과 이미지 탐색을 파이썬 함수 몇 개로 제공하는 크로스 플랫폼 라이브러리다. 화면에서 특정 이미지를 찾아 그 위치를 클릭하는 식의 매크로를 빠르게 만들 수 있다.

import pyautogui

pyautogui.FAILSAFE = True            # 마우스를 화면 모서리로 옮기면 중단
pyautogui.PAUSE = 0.5                # 각 동작 사이 대기

pyautogui.moveTo(300, 200, duration=0.3)
pyautogui.click()
pyautogui.write("hello", interval=0.05)
pyautogui.hotkey("ctrl", "s")        # 단축키 조합

pos = pyautogui.locateCenterOnScreen("save_button.png", confidence=0.9)
if pos is not None:
    pyautogui.click(pos)

FAILSAFE 옵션은 매크로가 폭주할 때 사용자가 마우스를 화면 왼쪽 위 모서리로 던져 강제 중단할 수 있게 하는 안전장치이므로 끄지 않는 것이 좋다. 이미지 탐색은 confidence 인자를 쓰려면 OpenCV가 필요하며, 디스플레이 배율이 다른 환경에서는 좌표가 어긋날 수 있다.

Selenium으로 하는 웹 자동화

Selenium은 웹드라이버(WebDriver) 표준을 통해 실제 브라우저를 조종하는 라이브러리다. 좌표가 아니라 CSS 선택자나 XPath로 요소를 특정하므로 화면 구성이 조금 바뀌어도 동작이 유지된다. 동적으로 로딩되는 페이지에서는 time.sleep으로 무작정 기다리기보다 명시적 대기(Explicit Wait)를 사용해 조건이 충족될 때까지만 기다리는 것이 정석이다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://example.com/login")

wait = WebDriverWait(driver, 10)
box = wait.until(EC.presence_of_element_located((By.ID, "username")))
box.send_keys("tester")
driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click()
driver.quit()

비슷한 목적의 최신 대안으로 Playwright가 있다. 자동 대기가 기본으로 내장되어 있고 여러 브라우저를 한 API로 다룰 수 있어 새 프로젝트에서 선호되는 추세다.

목적별 라이브러리 비교

라이브러리대상방식장점한계
PyAutoGUI화면 전체좌표와 이미지 매칭대상 무관, 배우기 쉬움해상도와 UI 변경에 취약
Selenium, Playwright웹 브라우저DOM 요소 제어정확하고 검증 가능브라우저 밖은 제어 불가
pywinautoWindows 앱접근성 API로 위젯 제어좌표 불필요, 안정적Windows 전용
pynput, keyboard입력 장치입력 후킹과 발생전역 단축키, 입력 감지고수준 기능 없음
openpyxl, pandas엑셀과 데이터파일 직접 읽고 쓰기GUI 없이 빠르고 견고화면 조작 아님

정해진 시각에 매크로를 실행하려면 schedule 라이브러리나 운영체제의 크론(cron), 작업 스케줄러를 함께 쓴다. 사무 자동화라면 화면을 흉내 내기보다 openpyxl처럼 파일과 API를 직접 다루는 쪽이 훨씬 안정적이라는 점도 기억할 만하다.

주의할 점

화면 기반 매크로는 실행 중에 다른 창이 뜨거나 포커스가 바뀌면 엉뚱한 곳을 조작할 수 있으므로, 안전장치와 로그를 반드시 갖추고 사람이 지켜보는 상태에서 검증해야 한다. 또한 웹 서비스 자동화는 대상 사이트의 이용 약관과 robots 정책을 확인해야 하며, 로그인 우회나 대량 요청은 법적 문제로 이어질 수 있다. 게임 등 자동 조작을 금지하는 프로그램에 매크로를 쓰는 것은 제재 대상이 된다. 기술적으로는 sleep 값을 고정하는 대신 조건 기반 대기를 쓰고, 좌표 하드코딩 대신 이미지나 선택자 같은 의미 있는 기준으로 대상을 찾는 습관이 유지 보수성을 높인다.

면접에서 이렇게 물어본다

  • PyAutoGUI 같은 좌표 기반 자동화와 Selenium 같은 DOM 기반 자동화의 장단점을 비교해 보라.
  • Selenium에서 time.sleep 대신 명시적 대기를 써야 하는 이유는 무엇인가.
  • 화면 해상도나 배율이 다른 환경에서 이미지 매칭 매크로가 깨지는 이유와 대처 방법을 설명해 보라.
  • 반복적인 엑셀 업무를 자동화한다면 GUI 매크로와 openpyxl 중 무엇을 선택하고 그 이유는 무엇인가.
  • 웹 자동화를 실무에 도입할 때 고려해야 할 법적, 윤리적 제약에는 어떤 것이 있는가.
JavaScript / Python 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기