마우스와 키보드를 자동으로 제어하기 위한 pyautogui 라이브러리와, 클립보드에 한글을 사용하기 위한 pyperclip 라이브러리를 설치한다.
python -m pip install pyautogui
python -m pip install pyperclip
아래는 마우스의 좌표를 출력하는 코드이다.
위 코드는 1초마다 마우스의 x, y좌표를 출력한다. 아래는 실행결과이다.
오토마우스 라이브러리는 자동화에 아주 유용하기 때문에, 관련 메서드에 대해 간략히 살펴보고 넘어가겠다.
① moveTo(x, y)
② moveTo(x, y, 시간)
③ moveRel(x, y)
④ click()
⑤ doubleClick()
⑥ rightClick()
⑦ dragTo(x=50, y=50, duration=2)
⑧ typewrite("hello")
⑨ typewrite("hello", interval=1)
⑩ hotkey("ctrl", "v")
⑪ screenshot("저장경로", region=(100, 100, 50, 50))
⑫ write
먼저 네이버 검색창의 좌표를 알아내야하기 때문에, 화면을 분할하여 좌편에는 VS Code를 띄워놓고, 우편에는 네이버 페이지를 띄워놓는다.
네이버 검색창의 좌표를 측정해보니 (1470, 255)가 나왔다. 이 값을 이용해 아래와 같이 코드를 작성할 수 있다.
이제 이 코드를 실행해보면 마우스가 저절로 이동하여 서울 날씨를 검색한다.
이번에도 캡쳐할 화면의 마우스 좌표를 먼저 알아야 한다.
위 끝의 좌표는 (998, 317)이 나왔다.
아래 끝의 좌표는 (1838, 827)이 나왔다. 이제 이 좌표를 이용해 캡쳐에 활용하면 된다.
여기서 주의해야 할 점은, region의 속성 값으로 위 끝과 아래 끝의 좌표를 대입하는 게 아니라, 위 끝 좌표를 기준으로 한 가로와 세로 길이를 입력해주어야 한다는 것이다. 코드를 실행해보니 캡쳐가 정상적으로 진행되었다.
이번에는 네이버가 아닌 다른 사이트에서도 실행될 수 있는 범용적인 실행파일을 만들어보자. 이번에는 주소 입력창의 (x, y) 좌표를 알아보기로 하자.
이번에는 (1205, 70)이라는 결과가 나왔다.
또한, 연속적인 검색을 위해 검색 후 나오는 화면의 검색창 좌표도 알아야 한다.
그 결과, (1066, 177)이 나왔다. 이 결과를 활용하여 아래와 같이 코드를 작성하자.
for문에 idx를 추가한 이유는 첫번째 검색의 좌표가 다른 검색의 좌표와 다르기 때문이다. 이 때, enumerate를 쓰면 인덱스와 값을 한 번에 반환받을 수 있다. 이제 코드를 실행만 하면되는데, 코드를 실행하기 전에 한영 키로 영어로 설정되었는지 확인해야 한다. 코드의 실행 결과는 아래와 같다.