1. 네이버 화면에서 좌측 상단 메뉴의 이메일 아이콘을 클릭하여 메일 메뉴로 들어간다면..
가. 아이콘 이미지 캡쳐하여 저장 (현재 workspace폴더\mail.png)
나. mail.png 이미지를 찾아 커서 이동 후 클릭
import pyautogui
try:
# mail.png 찾기
mail_icon = pyautogui.locateOnScreen('mail.png')
# mail.png 좌표 Box(left=384, top=274, width=27, height=29) 만약 이미지 못찾으면 None 출력
print(mail_icon)
# 이미지로 이동
pyautogui.moveTo(mail_icon)
# 이미지 클릭 (이미지 정가운데 부분)
pyautogui.click()
except OSError as exp:
print(exp)
다. 이미지는 좌측 상단부터 우측으로 차례로 찾는다.
라. 위 코드는 찾고자 하는 이미지가 우측하단쪽에 있을 경우 속도가 느린 단점이 있다. 이에 다음과 같이
grayscale 옵션을 줄 경우 모든 이미지를 음영처리하여 찾기 때문에 약 30% 속도 개선이 발생한다. 하지만 정확도가 떨어지는 단점이 있다.
mail_icon = pyautogui.locateOnScreen('mail.png', grayscale=True)
마. 두번째 방법으로는 이미지를 찾는 범위를 지정할 수 있다.
# 시작지점 x, y 좌표, 가로/세로 길이
mail_icon = pyautogui.locateOnScreen('mail.png', region=(x, y, width, height))
바. 세번째 방법으로는 정확도를 줄이는 방법이 있다. confidence 옵션을 주어 정확도를 낮추면 이미지를 쉽게 찾을 수 있다. 하지만 정확도가 낮아질 수록 잘못된 이미지를 찾을 수 있다.
Terminal > pip install opencv-python
# confidence의 기본값은 0.999 (99.9% 일치할 경우)
mail_icon = pyautogui.locateOnScreen('mail.png', confidence=0.8) # 80% 이상 일치할 경우
사. 화면 전환 등의 이미로 찾고자 하는 대상 이미지가 바로 보여지지 않을 경우 처리
mail_icon = pyautogui.locateOnScreen('mail.png')
while mail_icon is None:
mail_icon = pyautogui.locateOnScreen("mail.png")
pyautogui.click(mail_icon)
2. 동일한 이미지가 여러개일 경우.. 예를 들면 아래 그럼의 체크박스를 모두 클릭해야한다면
가. 아이콘 이미지 캡쳐하여 저장 (현재 workspace폴더\checkbox.png)
나. checkbox.png 이미지를 찾아 모두 클릭
import pyautogui
try:
# locateAllOnScreen 모든 이미지 찾기
# 만약 locateOnScreen를 사용한다면 처음 발견하는 이미지만 처리 후 종료
for i in pyautogui.locateAllOnScreen("checkbox.png"):
# 이미지 좌표값 출력
print(i)
# 체크박스 클릭
pyautogui.click(i)
except OSError as exp:
print(exp)
'RPA > Python' 카테고리의 다른 글
[pyautogui] 키보드 입력 (0) | 2021.05.04 |
---|---|
[pyautogui] 프로그램 창 다루기 (0) | 2021.05.03 |
[pyautogui] 스크린샷 (0) | 2021.04.29 |
[pyautogui] 프로그램 강제 종료 (0) | 2021.04.29 |
[pyautogui] 마우스 커서 정보 (0) | 2021.04.29 |