파이썬(Python)

[ pyautogui ] 파이썬 마우스 이동하기, 클릭하기(pyautogui mouse move, click)

카루루1007 2022. 10. 4. 23:37
728x90
반응형
SMALL

아래 예제는 화면에 계산기를 띄워놓고 하셔야 합니다.(지난번 작성한 글과 연결이 됩니다.)

◆ 마우스 이동하기


pyautogui를 사용하면 마우스 이동이 가능합니다.

마우스 이동을 위해서는 moveTo() 함수를 사용합니다.

T 가 대문자여야 하니 주의하세요

import pyautogui

btn_find = pyautogui.locateOnScreen("9.png")

center = pyautogui.center(btn_find)

pyautogui.moveTo(center)


앞서 작성했던 코드에서 마지막 줄과 같이 코드를 삽입하면

해당 위치로 마우스가 이동하게 됩니다.

해당 이미지의 가운데 좌표값(center)을 받아 moveTo 함수의 인자로 전달하는 코드입니다.

moveTo 함수는 해당 좌표(절대좌표)로 이동을 하는 함수입니다.

만약 현재 마우스의 좌표를 기준으로 이동(상대좌표)하고 싶다면

moveRel() 함수를 사용하시면 됩니다.



◆ 마우스 이동시간 랜덤하게 하기


위 코드로 실행을 하게 되면 항상 이동하는 시간이 동일하게 됩니다.

간혹 일정한 간격의 시간으로 작업이 반복된다면

해당 행위를 차단해버리는 경우가 있습니다.



이를 방지하기 위해 마우스 이동시간을 랜덤하게 지정해보겠습니다.

랜덤한 수치를 가지고 오기 위해서는

random 모듈을 import 해야합니다.

import random

그런 후 아래 코드를 추가로 작성해줍니다.

random_time = random.randint(1,3)

randint(a, b) 함수는 숫자 a 부터 b 까지 중 랜덤한 숫자를 반환합니다.

그리고 반환는 숫자는 정수입니다.

즉 [ 1, 2, 3 ] 셋 중 하나가 반환됩니다.

그리고 위에 작성했던 moveTo() 함수의 인자를 다음과 같이 추가합니다.

pyautogui.moveTo(center, duration=random_time)

위 코드를 추가하면

현재 위치에서부터 목표 위치까지 마우스가 이동합니다.

이동하는데 걸리는 시간은 1초 ~ 3초 중 랜덤입니다.


◆ 마우스 클릭하기


마우스를 클릭하는 방법은 간단히 click() 함수를 사용하면 됩니다.

pyautogui.click()


다른 방법으로 마우스를 누르고, 마우스를 떼는 행위를 각각 명령할 수 있습니다.

해당 함수는 mouseDown() 과 mouseUp() 입니다.

pyautogui.mouseDown()

pyautogui.mouseUp()

위 두줄을 입력하면

pyautogui.click() 과 동일한 기능을 합니다.



마찬가지로 마우스를 누르고 떼는 행위 사이에 

랜덤한 시간을 설정해 준다면 마우스를 누르는 속도도 변경이 가능합니다.

시간과 관련된 일을 하기 위해서는 time 모듈을 먼저 import 해줍니다.

import time

그런 후 아래와 같이 코드를 작성합니다.

pyautogui.mouseDown()

time.sleep(random.uniform(0.125, 0.175))

pyautogui.mouseUp()


sleep() 함수는 정해진 시간만큼 잠시 동작을 멈추는 기능을 합니다.

그 안에 random.uniform(a, b) 을 넣어 a 와 b 사이의 숫자를 랜덤으로 추출 한 후

마우스를 누른 후 그 시간만큼 기다렸다가 마우스를 떼게 됩니다.

◆ 전체코드

import pyautogui
import random
import time

btn_find = pyautogui.locateOnScreen("9.png")

#9.png 와 동일한 이미지를 화면에서 찾아서 좌측 상단의 위치와 해당 위치로 부터 우측과 아래측의 길이 반환

center = pyautogui.center(btn_find)

#찾은 이미지의 가운데 위치값 반환

random_time = random.randint(1,3)

#1 ~ 3 사이의 정수를 랜덤하게 반환

pyautogui.moveTo(center, duration=random_time)

#찾은 이미지의 가운데 위치로 마우스를 이동, 이동하는데 걸리는 시간은 1 ~ 3초 중 랜덤 추출 값

pyautogui.mouseDown()

#마우스를 누름

time.sleep(random.uniform(0.125, 0.175))

#0.125초 ~ 0.175초 사이중 랜덤한 시간동안 대기

pyautogui.mouseUp()

#마우스 버튼을 뗌

 

728x90
반응형
LIST