[파이썬] 키보드 및 마우스 이벤트 자동화
키보드 및 마우스 이벤트 자동화는 자동화 프로세스를 구현할 때 매우 유용한 도구입니다. 이를 통해 사용자의 입력을 자동으로 시뮬레이션하거나 특정 작업을 자동으로 수행할 수 있습니다. 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")
키보드 및 마우스 이벤트 자동화는 다양한 작업을 자동으로 수행하는 데 유용한 도구입니다. 위 예제 코드와 함께 다양한 라이브러리를 활용하여 더욱 복잡한 자동화 프로세스를 구현할 수 있습니다.