본문 바로가기

PYTHON

[파이썬] 마우스, 키보드 자동화 기능 pyautogui 사용법

728x90

pyautogui

 

먼저 터미널에 설치를 해야한다.

나는 Visual Studio Code를 이용해 만들었고, 아래는 터미널에 설치하는 사진이다

Visual Studio Code 하단에 보면 문제, 출력, 터미널, 디버그 콘솔 이렇게 나와있는 창이 있는데 그 중 터미널이라는 곳에 설치하면 된다!

pip install pyautogui

위 명령어를 치면 된다. 나는 이미 설치를 해서 저런 문구가 나오는데, 노란 글씨로 WARNING에 뭐라뭐라 쓰여있는데 실행이 안되면 하라는 대로 하면 된다! 아마 업데이트 버전이 있어서 그걸로 업데이트하라는 문구인듯! 

 

import pyautogui

pyautogui를 사용하기 위해서는 위 명령어를 가장 먼저 입력하면 된다!

 

pyautogui.position()

pyautogui는 클릭할 부분을 미리 정해서 그 부분을 마우스로 자동으로 클릭하게 한다

그러기 위해서는 좌표값이 있어야되는데 그 좌표값을 얻을 수 있는 명령어이다!

 

이건 터미널에서 실행한 모양이다. 꼭 이렇게 안해도 되는데 참고만 하자!

내 마우스가 어디에 위치해 있는지 좌표값을 반환해준다!

 

print(pyautogui.position())

이렇게 입력을 한다면 마우스가 어디에 위치해 있는지 좌표값을 출력해 줄 것이다!

 

pyautogui.moveTo(35, 745)

(35, 745)라는 위치로 마우스를 이동하라는 의미이다.

실행하면 입력한 좌표값의 위치에 마우스가 이동해 있을 것이다

 

pyautogui.click()

말 그대로 클릭하는 명령어. 실행하면 마우스가 있는 곳을 클릭할 것이다.

 

pyautogui.doubleClick()

말 그대로 더블클릭하는 명령어. 바탕화면에서 크롬이나 메모장 등을 클릭할 때 쓰면 좋다

 

pyautogui.click(188, 105)

꼭 moveTo를 쓰고 click()을 쓰지 않더라도 한 번에 할 수 있는 방법이 있다.

위처럼 쓰면 (188, 105) 좌표로 가서 클릭을 할 것이다.

 

pyautogui.typewrite('insert here')

typewrite는 키보드 제어로, 괄호 안에 들어가는 말을 입력해준다!

다만 한글을 입력하려면 따로 뭘 더 설치해야한다고 한다. 나는 로그인 할 때나 링크를 입력할 때 사용해서 한글을 쓸 필요는 없었다.

 

pyautogui.press('tab') #tab키를 누르기
pyautogui.press('tab', presses=7) #tab키를 7번 누르기

press는 키보드의 버튼을 누른다라고 생각하면 편할 것 같다. presses로 몇 번 누를지도 정할 수 있다

 

pyautogui.screenshot('c:\\alonepy\\grade.png', region=(1124, 195, 60, 40)) #좌표 주변 넓이를 캡쳐해서 저장

마우스가 위치한 좌표의 주변 넓이를 캡쳐해서 저장하는 명령어이다.

픽셀값 기준으로 넓이 설정이 되는 것 같은데 불편해서 나는 일일히 캡쳐해서 저장했다..

코드 파일과 사진 파일이 같은 곳에 위치해 있으면 'grade.png' 이렇게 써도 되는데 못 찾길래 경로를 지정해서 입력했다.

 

grade = pyautogui.locateCenterOnScreen('C:\\alonepy\\grade.png') #사진이 있는 위치를 가져와 저장

미리 저장한 사진을 불러와 그 사진이 위치한 곳을 grade라는 변수에 저장하는 것이다

 

delete = pyautogui.locateCenterOnScreen("C:\\alonepy\\del.png",confidence = 0.9)

위 명령어와 비슷한데 confidence가 붙었다. confidence는 정확도를 나타내는 것으로 높을 수록 더 정확한 사진을 처리할 수 있다고 한다

 

grade = pyautogui.locateCenterOnScreen('C:\\alonepy\\grade.png', confidence=0.9)

if grade == None : #grade사진이 있으면
     pass
else : #grade사진이 없으면
     pyautogui.click(grade1)
     pyautogui.press(['up', 'enter'])

화면에 어떤 버튼(검색, 로그인 등등 아무거나 좌표에 위치한 사진도 괜찮음)이 없으면 클릭을 하도록 만들고 싶을 때 위의 조건문을 이용하면 된다.

grade사진을 저장해놓고 화면에 grade사진이 있으면 다음 문장(pass)을 실행하고 grade사진이 없으면 다른 부분을 클릭하도록 하는 것이다.

 

for j in pyautogui.locateAllOnScreen("C:\\alonepy\\app.png", confidence = 0.9) :
    pyautogui.click(j)

만약 클릭하고 싶은 버튼이 화면에 여러 개라면 locateAllScreen과 반복문을 이용해 클릭하고 싶은 모든 버튼을 클릭할 수 있다.

여기에서는 화면에 있는 app이라는 사진을 모두 클릭할 수 있도록 한 것이다.

 

import schedule

def job() :
   #실행하고 싶은 문장 삽입
schedule.every().day.at("15:59").do(job) #매일 15:59에 실행
while True :
     schedule.run_pending()

만약 특정 시간에 코드를 실행시키고 싶으면 위의 코드를 쓰면 된다.

몇 분, 몇 시간, 몇 초마다 실행할 수 있도록 문장을 바꿀 수도 있다.

 

그리고 자동으로 클릭을 하고 키보드 버튼을 제어하는데 너무 빨라서 다음 페이지가 넘어가기도 전에 이미 실행이 될 때도 있다.

import time

time.sleep(1)

그럴 땐 이걸 써서 약간의 딜레이를 주면 된다.

인터넷 페이지가 내 맘대로 로딩되는 것이 아니니 시간을 조금 늦춰서 제어가 될 수 있도록 하면 된다

1은 1초이다. 0.5로 하면 0.5초 이렇게 될 것이다.

 


수강신청 같은 매크로보단 웹크롤링 할 때 쓰면 더 좋을 것 같다. 저 명령어들 말고도 여러가지 있지만, 위에 있는 명령어만 써도 어느 정도 프로그램을 만들 수 있다. 언젠가는 selenium을 공부해봐야지.

 

728x90