[RPA] 데스크탑UI - 환경설정, 마우스이동, 마우스액션, 마우스정보

2021. 7. 29. 00:21·Tools/RPA
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
'Tools/RPA' 카테고리의 다른 글
  • [RPA] 데스크탑UI - 윈도우, 키보드, 메시지박스, 로그
  • [RPA] 데스크탑UI - 스크린, 이미지처리, 이미지처리(속도개선), 이미지처리(대기)
  • [RPA] 엑셀 - 조건에 맞게 수정후 최종성적내기
  • [RPA] 엑셀 - 수식, 데이터수식, 병합, 병합해제, 이미지
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (128)
        • Algorithm (52)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (36)
        • Spring (14)
        • JSP (11)
        • Network (5)
      • Frontend (29)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (10)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (8)
        • Linux (7)
        • Mac (1)
      • Tools (31)
        • IntelliJ (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (21)
        • ERROR (5)
        • 세미나 | 교육 (10)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    jsp
    PyQt
    계산기
    연습문제
    spring
    자바
    명품자바에센셜
    PyQt5
    백준
    스윙
    이클립스
    RPA
    생능출판
    자료구조
    VUE
    Java
    자동화
    코딩테스트
    vue.js
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[RPA] 데스크탑UI - 환경설정, 마우스이동, 마우스액션, 마우스정보
상단으로

티스토리툴바