YouTube 나도코딩님의 동영상을 보면서 공부한 내용입니다.
부족한 내용이나 잘못된 내용은 댓글남겨주시면 감사하겠습니다!
출처 : https://www.youtube.com/channel/UC7iAOLiALt2rtMVAWWl4pnw
1. 환경설정
# '2_desktop' 폴더 생성후 '1_env.py'파일 생성

# pyautogui설치
pip install pyautogui

# pyautogui 설치 확인
# 화면사이즈 - pyautogui.size()
# 1_env.py
import pyautogui
size = pyautogui.size() #현재 화면의 스크린 사이즈를 가져옴
print(size) #가로, 세로 크기를 알 수 있음
# size[0] : width
# size[1] : height

2. 마우스
# 절대좌표로 마우스 이동 - pyautogui.moveTo(x,y)
import pyautogui
# 마우스 이동
pyautogui.moveTo(100,100) # 지정한 위치로 마우스를 이동
# 마우스 이동 시간 지정
- duration : 초단위로 5초동안 100, 200위치로 이동
pyautogui.moveTo(100,200, duration=5)
# 상대좌표로 마우스 이동(현재 커서가 있는 위치로부터)
pyautogui.moveTo(100,100, duration=0.25)
pyautogui.move(100, 100, duration=0.25) # 100, 100기준으로 +100, +100 - 200, 200
pyautogui.move(100, 100, duration=0.25) # 200, 200기준으로 300. 300
# 마우스 위치 좌표 값 구하기 - pyautogui.position()
pyautogui.moveTo(100,100, duration=0.25)
print(pyautogui.position()) #Point(x, y)
pyautogui.move(100, 100, duration=0.25) # 100, 100기준으로 +100, +100 - 200, 200
print(pyautogui.position()) #Point(x, y)
pyautogui.move(100, 100, duration=0.25) # 200, 200기준으로 300. 300
print(pyautogui.position()) #Point(x, y)

p = pyautogui.position()
print(p[0], p[1]) #x, y
print(p.x, p.y) #x, y

# 2_mouse_move.py
import pyautogui
# 절대 좌표로 마우스 이동
# pyautogui.moveTo(200,100) # 지정한 위치(가로x, 세로y)로 마우스를 이동
#duration : 초단위, 5초동안 100, 200위치로 이동
# pyautogui.moveTo(100,200, duration=5)
# pyautogui.moveTo(100,100, duration=0.25)
# pyautogui.moveTo(200,200, duration=0.25)
# pyautogui.moveTo(300,300, duration=0.25)
# 상대 좌표로 마우스 이동(현재 커서가 있는 위치로부터)
# pyautogui.moveTo(100,100, duration=0.25)
# print(pyautogui.position()) #Point(x, y)
# pyautogui.move(100, 100, duration=0.25) # 100, 100기준으로 +100, +100 - 200, 200
# print(pyautogui.position()) #Point(x, y)
# pyautogui.move(100, 100, duration=0.25) # 200, 200기준으로 300. 300
# print(pyautogui.position()) #Point(x, y)
p = pyautogui.position()
print(p[0], p[1]) #x, y
print(p.x, p.y) #x, y
3. 마우스 액션
# 지정된 좌표로 이동 후 클릭 - click(x, y, 지연시간)
import pyautogui
# 클릭할 좌표확인
# pyautogui.sleep(3) # 3초 대기
# print(pyautogui.position())
pyautogui.click(961, 17, duration=1) # 1초동안 (961, 17)좌표로 이동 후 마우스 클릭
pyautogui.click() # 마우스 클릭 - Down + Up
# 마우스 클릭 - mouseDown( ) +mouseUo( )
# 보통은 클릭을 쓰고, 얘네는 드래그 앤 드랍할 때 사용
pyautogui.mouseDown() # 마우스 버튼 클릭하고 있는 상태
pyautogui.mouseUp() # 마우스 버튼에서 손을 뗀 상태
# 더블클릭- doubleClick( ) or click(clicks=2)
pyautogui.doubleClick()
pyautogui.click(clicks=2)
# 드래그앤드롭
pyautogui.moveTo(100,100)
pyautogui.mouseDown() # 마우스 버튼 누른 상태
pyautogui.moveTo(200, 300)
pyautogui.mouseUp() # 마우스 버튼 뗸 상태
# 오른쪽 클릭
pyautogui.rightClick()
# 왼쪽 클릭
pyautogui.leftClick()
# 마우스 휠 클릭
pyautogui.middleClick()
# 드래그 - pyautogui.drag(x,y) or pyautogui.dragTo(x,y)
# 메모장 드래그하여 위치 이동
- 먼저 position으로 메모장 타이틀바의 위치 알아냄
- moveTo를 이용해 마우스의 위치를 메모장 타이블바로 옮김
- drag를 통해 메모장 위치 이동
- duration을 안주면 너무 빨라서 인식이 안됨
# 마우스 드래그
print(pyautogui.position())
pyautogui.moveTo(652, 572)
# pyautogui.drag(100,0) # 현재 위치 기준으로 x100만큼 y 0만큼 드래그
pyautogui.drag(100,0, duration=0.25) #너무 빠른 동작으로 drag 수행이 안될 떄는 duration설정
# 마우스 드래그
# print(pyautogui.position())
pyautogui.moveTo(652, 572)
pyautogui.dragTo(1152, 572, duration=0.25) #절대 좌표 기준으로 드래그
# 마우스 스크롤 - pyautogui.scroll(스크롤할 값)
pyautogui.scroll(-300) # 양수이면 위 방향으로, 음수이면 아래 방향으로 300만큼 스크롤
# 3_mouse_action.py
import pyautogui
# 클릭할 좌표확인
# pyautogui.sleep(3) # 3초 대기
# print(pyautogui.position())
# pyautogui.click(961, 17, duration=1) # 1초동안 (961, 17)좌표로 이동 후 마우스 클릭
# pyautogui.click() # 마우스 클릭 - Down + Up
# 보통은 클릭을 쓰고, 얘네는 드래그 앤 드랍할 때 사용
# pyautogui.mouseDown() # 마우스 버튼 클릭하고 있는 상태
# # pyautogui.mouseUp() # 마우스 버튼에서 손을 뗀 상태
# 더블클릭
# pyautogui.doubleClick()
# pyautogui.click(clicks=2)
# 드래그앤 드롭
# pyautogui.moveTo(100,100)
# pyautogui.mouseDown() # 마우스 버튼 누른 상태
# pyautogui.moveTo(200, 300)
# pyautogui.mouseUp() # 마우스 버튼 뗸 상태
# 오른쪽 클릭
# pyautogui.rightClick()
# 왼쪽 클릭
# pyautogui.leftClick()
# 마우스 휠 클릭
# pyautogui.middleClick()
# 마우스 드래그
# print(pyautogui.position())
# pyautogui.moveTo(652, 572)
# pyautogui.drag(100,0) # 현재 위치 기준으로 x100만큼 y 0만큼 드래그
# pyautogui.drag(100,0, duration=0.25) #너무 빠른 동작으로 drag 수행이 안될 떄는 duration설정
# pyautogui.dragTo(1152, 572, duration=0.25) #절대 좌표 기준으로 드래그
# 마우스 스크롤
pyautogui.scroll(-300) # 양수이면 위 방향으로, 음수이면 아래 방향으로 300만큼 스크롤
4. 마우스 정보
- 실행하면 밑에 사진과같은 창이 뜸. 마우스를 이동하면 좌표값이나 색등이 변경됨.
import pyautogui
pyautogui.mouseInfo()

# 자동화 종료해지 - pyautogui.FAILSAFE = False
(가급적 사용x 그냥 알고 있기만.)
다음과 같은 코드가 반복적으로 실행되면서 내가 만약 이 자동화를 종료하고 싶다면 화면 4모서리중 아무 모서리에 갖다두면
for i in range(10):
pyautogui.move(100,100)
pyautogui.sleep(1)
이렇게 종료가 됨

이런 현상을 해지하고 싶을 때 다음과 같은 코드를 작성하면 마우스를 모서리에 가져가도 자동화 강제 종료 되지 않음
pyautogui.FAILSAFE = False
# 모든 동작 다음에 sleep적용 - pyautogui.PAUSE
- 이 코드를 적은 후 위 for문의 sleep(1)을 주석하면 아까와 똑같은 결과
pyautogui.PAUSE = 1 # 모든 동작에 1초씩 sleep적용
# 4_mouse_info.py
import pyautogui
# pyautogui.mouseInfo()
pyautogui.PAUSE = 1 # 모든 동작에 1초씩 sleep적용
# pyautogui.FAILSAFE = False
for i in range(5):
pyautogui.move(100,100)
# pyautogui.sleep(1)'Tools > RPA' 카테고리의 다른 글
| [RPA] 데스크탑UI - 윈도우, 키보드, 메시지박스, 로그 (0) | 2021.07.29 |
|---|---|
| [RPA] 데스크탑UI - 스크린, 이미지처리, 이미지처리(속도개선), 이미지처리(대기) (0) | 2021.07.29 |
| [RPA] 엑셀 - 조건에 맞게 수정후 최종성적내기 (0) | 2021.07.29 |
| [RPA] 엑셀 - 수식, 데이터수식, 병합, 병합해제, 이미지 (0) | 2021.07.28 |
| [RPA] 엑셀 - 차트, 셀스타일 (0) | 2021.07.28 |