[파이썬] 키보드 및 마우스 이벤트 자동화

키보드 및 마우스 이벤트 자동화는 자동화 프로세스를 구현할 때 매우 유용한 도구입니다. 이를 통해 사용자의 입력을 자동으로 시뮬레이션하거나 특정 작업을 자동으로 수행할 수 있습니다. Python은 다양한 라이브러리와 모듈을 제공하여 키보드 및 마우스 이벤트 자동화를 간편하게 구현할 수 있습니다.

1. pyautogui 라이브러리

pyautogui는 키보드와 마우스 이벤트를 자동화하는 데 사용되는 파이썬 라이브러리입니다. 이 라이브러리를 사용하면 키 입력, 마우스 이동, 클릭 등의 작업을 자동으로 수행할 수 있습니다.

import pyautogui

# 마우스 이동
pyautogui.moveTo(x, y)

# 마우스 클릭
pyautogui.click()

# 키 입력
pyautogui.typewrite("Hello, World!")

# 스크린샷 찍기
pyautogui.screenshot("screenshot.png")

# 이미지 인식
image_location = pyautogui.locateOnScreen("image.png")

2. pynput 라이브러리

pynput은 키보드와 마우스 이벤트를 감지하고 제어하는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하면 사용자의 입력을 감지하거나 특정 키 입력을 가로챌 수 있습니다.

from pynput import keyboard, mouse

# 키보드 이벤트 감지
def on_press(key):
    print(f"Key pressed: {key}")
    
def on_release(key):
    print(f"Key released: {key}")

listener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()

# 마우스 이벤트 감지
def on_move(x, y):
    print(f"Mouse moved to ({x}, {y})")
    
def on_click(x, y, button, pressed):
    if pressed:
        print(f"Mouse clicked at ({x}, {y}) with {button}")
        
def on_scroll(x, y, dx, dy):
    print(f"Mouse scrolled at ({x}, {y}) with ({dx}, {dy})")

listener = mouse.Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll)
listener.start()

3. 자동화 예제 - 자동 로그인

자동 로그인은 키보드 및 마우스 이벤트 자동화를 활용한 대표적인 예입니다. 아래는 Selenium 라이브러리와 pyautogui를 사용하여 자동 로그인을 수행하는 예제입니다.

from selenium import webdriver
import pyautogui

# 웹 드라이버 초기화
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get("https://www.example.com")

# 로그인 폼 입력
username_field = driver.find_element_by_id("username")
username_field.send_keys("your_username")
password_field = driver.find_element_by_id("password")
password_field.send_keys("your_password")

# 로그인 버튼 클릭
login_button = driver.find_element_by_id("login")
login_button.click()

# 자동화를 위한 대기 시간
driver.implicitly_wait(10)

# 화면 크기 가져오기
screen_width, screen_height = pyautogui.size()

# 스크린샷 찍기
screenshot = pyautogui.screenshot("login_success.png")

키보드 및 마우스 이벤트 자동화는 다양한 작업을 자동으로 수행하는 데 유용한 도구입니다. 위 예제 코드와 함께 다양한 라이브러리를 활용하여 더욱 복잡한 자동화 프로세스를 구현할 수 있습니다.