공부/정보과학

[python] pyautogui를 이용한 매크로

theplainest 2024. 2. 9. 15:28

pyautogui라는 라이브러리로 마우스와 키보드를 자동화하는 간단한 매크로를 만들 수 있다.

보통 '매크로'하면 python의 Selenium 라이브러리를 떠올린다. Selenium 만큼 효과적인 웹 매크로는 아니다. pyautogui는 마우스를 모니터의 좌표 기준으로 움직이기 때문에, 다른 컴퓨터에서 똑같이 작동하지 않는다는 한계가 있다. 그러나 셀레니움처럼 HTML을 확인하는 일 없이 간단하게 제작할 수 있다. 여건이 된다면 수강신청 같은 걸 할 때 요긴하게 쓸 수 있다.

 

설치

우선 pyautogui를 설치해야 한다. python 터미널에 다음과 같이 입력해보자.

pip install pyautogui

또한 time 라이브러리의 sleep 함수도 중요하게 쓰인다. time 라이브러리는 python 내장 라이브러리이므로 추가적인 설치가 필요하지 않다.

 

명령어

함수
position() 현재 마우스 위치 (x, y) 반환
move(x,y) (x, y) 만큼 이동 (상대적)
moveTo(x,y) (x, y)로 이동 (절대적)
click() 마우스 클릭
click(x,y) (x, y) 만큼 moveTo 후 마우스 클릭
scroll(c) c만큼 스크롤
typewrite("ABC") "ABC" 입력
sleep(t) 0.5초만큼 일시정지

 

가장 기본적이고 중요한 명령어는 위와 같다. 몇 가지 부가 설명을 하자면, 컴퓨터 기준으로 좌표는

모니터 기준 좌표

모양이다.

또 scroll(c)에서 c가 음수일 때 아래로 내려가게 되고, typewrite에서 한글은 입력할 수 없다는 점에 유의해야 한다.

 

사용

사용 예시

이제 직접 만들어보자. 위에 제시한 예시처럼 몇 개 안되는 명령어만으로도 괜찮은 자동화 프로그램을 만들 수 있다. 더 다양한 함수는 https://pyautogui.readthedocs.io/en/latest/# 에서 확인할 수 있다.

가장 주의해야 할 점은, 빠르게 하고 싶다고 명령어를 바로바로 실행하려 한다면 반드시 오류가 발생하게 된다는 것이다. 그 이유는 명령을 실행하는 데 걸리는 시간 때문인데, 예를 들어 스크롤를 하는 중인데 스크롤이 완료되지 않은 상태에서 클릭을 실행시켜봤자 잘못 눌리게 된다. 때문에 sleep() 함수로 적당한 시간을 조절하면서 안전하게 써야 하는 것이다.

'공부 > 정보과학' 카테고리의 다른 글

[CodeUp] 3516: 사탕 줍기 3 C++  (0) 2024.01.19
선택 알고리즘 C++ 구현  (0) 2024.01.16
정렬 알고리즘 C++ 구현  (0) 2024.01.16