파이썬에는 웹을 자동화할 수 있는 selenium이라는 강력한 패키지가 있다. 해당 패키지를 이용해서 네이버 자동로그인도 구현하고, 이웃추가와 댓글을 자동으로 할 수 있는 프로그램을 작성해 보았다.
( 참조: 파이썬 네이버 자동 로그인, 블로그 댓글, 이웃추가 하는 방법은? )


하지만 특정 사건을 계기로 셀레니움을 이용해 자동화하는 것을 제약하는 싸이트들이 많아졌다. 하지만, 그 외에도 자동화를 지원하는 도구들이 많이 있다. 오늘은 파이썬에서 마우스를 컨트롤하는 pyautogui 라이브러리에 대해서 알아보도록 하겠다.

 

 

파이썬 키보드, 마우스 컨트롤 - pyautogui

 

 

pyautogui를 설치하기 위해 conda install pyautogui를 실행했다. 필자는 파이썬 아나콘다 배포판을 사용하고 있기 때문이다. 하지만, 패키지를 찾을 수 없다는 메시지가 나온다. pip install pyautogui로 설치하니 정상적으로 설치가 가능했다.

 

 
우선 마우스를 움직이기 위해서는 좌표를 알아야 한다. 전체 좌표 확인은 pyautogui.size()를 통해서 가능했다. 현재 마우스의 위치는 pyautogui.position()을 통해서 얻을 수 있다.

 

# 전체 화면 크기
  pyautogui.size()
# 현재 마우스 위치 확인
  pyautogui.position

 


마우스 커서를 움직이는 방법은 2가지가 있다. 절대주소와 상대주소이다.

절대주소는 현재 마우스 위치와 상관 없이 지정하는 마우스 위치로 이동하는 방법이다. 상대주소는 현재 마우스 위치를 기준으로 얼만큼 이동할 지를 지정하는 방석이다.

 

처음에는 빠르다가 나중에는 느려지게 하는 등의 움직이는 스타일도 설정이 가능한데 그다지 유용해 보이지는 않는다.

 

# 마우스 절대주소로 이동
  pyautogui.moveTo(0,0,5)   ->   5초안에 0,0으로 마우스 이동
  
# 상대주소로 이동
  pyautogui.moveRel(-20, 0)

 


드래그 컨트롤도 가능하다. 그냥 드래그를 할 수도 있고, 마우스 왼쪽 버튼이나 오른쪽 버튼이 눌린 채로 드래그하는 것도 가능하다.

 

# 마우스 왼쪽 버튼을 누르고 드래그하기
  pyautogui.dragTo(100,200,button='left')

 


마우스를 클릭하는 방법은 간단하다. click()함수를 호출하면 된다. 위치를 지정해서 클릭하는 것도 가능했다.

 

# 왼쪽 버튼 클릭
  pyautogui.click()
  
# 오른쪽 버튼 클릭
  pyautogui.click(button='right')
  
# 1초마다 2번 클릭
  pyautogui.clikck(clicks=2, interval=1)
  
# 더블클릭
  pyautogui.doubleClick()

 

 

마우스 버튼을 누르고 떼는 동작도 가능했다. mouseDown()은 누르고 있고, mouseUp() 떼는 동작이다.

 

# 마우스 왼쪽 버튼을 누른다.
  pyautogui.mouseDown()
  
# 마우스 오른쪽 버튼을 뗀다.
  pyautogui.mouseUp(button='right')

 


마우스 가운데 버튼으로 스크롤하는 것도 가능하다. scroll()함수를 이용해서 위아래로 좌우로도 스크롤이 가능했다.

 

# 10만큼 스클로하여 내린다
  pyautogui.scroll(10)

# 우측으로 10만큼 스크롤한다
  pyautogui.hscroll(10)

 

 

pyautogui를 통해서 마우스를 컨트롤 해 보았다. 그냥 그림을 그리는 것으로 활용할 곳은 없지만, 테스트 삼아 그려봤다.

 

 

 

오늘은 이렇게 pyautogui를 이용하여 마우스를 컨트롤하는 방법에 대해서 알아보았다. 파이썬 코드를 이용해 간단하게 마우스를 조정할 수 있었다. 마우스를 많이 클릭하는 게임 등에 유용하게 사용할 수 있지 않을까 한다. 하지만 자동화의 부작용이 있는 만큼 이러한 작업들을 많이 통제하는 추세인 듯 하기도 하다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기