설계라는 단어를 접하게 되니 거리감이 생기는 분들도 있을 것이다.
하지만 우리가 원하는 프로그램은 처음 생각했던 것 처럼
'아, 이런건 클릭 한번으로 간단하게 할 수 있을 것 같은데...' 라는 생각을 가진
간단한 프로그램이니 설계 또한 어렵게 생각 할 필요는 없다.
설계에 앞서 내가 어떤일을 하고 싶은지 분석하고 과정을 생각해보자.
예를 들어 내가 하고 싶은 일이 daum으로 접속하여 로그인을 하고 메일창을 여는 일이라고 예시를 들어보자.
그럼 나는
1. 먼저 인터넷을 켠다.
2. 다음 사이트로 이동한다.
3. ID와 PW를 입력하여 로그인을 한다.
4. 메일로 이동한다.
의 과정을 통해 원하는 결과를 이뤄낼 수 있다.
참고로 동일한 자동화업무(매크로) 작성이라 하더라도 웹페이지 등의 조작을 할 경우,
selenium 이나 다른 기능을 공부하며 익힌 웹페이지를 겨냥한 더 좋은 모듈들이 많이 있지만,
pyautogui로 가능한 기능을 알아보기 위해 pyautogui를 이용하여 위의 과정을 실행해보겠다.
* pyautogui는 유용한 모듈이지만, 해상도 등 제한 사항이 있기 때문에 웹페이지에서는 class name이나 id를 이용하여 제어할수 있는 selenium 등이 훨씬 유용하다.
그럼, 다시 본론으로 돌아와 내가 했던 과정이 PC에서 어떤 조작과 요청이 있었는지 생각해보자.
1. 인터넷을 켠다.
1-1. 바탕화면의 Internet Explorer Icon을 더블 클릭
1-2. Task바에 포함된 Icon 을 클릭
등 여러가지 방법이 있다.
하지만 별거 아닌 듯한 위의 과정에도 오류가 발생하는 과정과 예외라고 생각되는 일들에 대한 고려가 필요하다.
1-1-1. 바탕화면의 Internet Explorer Icon을 더블 클릭시 고려 사항
1) 바탕화면의 Internet Explorer Icon이 보일 수 있는 환경에서 시작되어야 한다는 전제이다.
좀 더 자세히 말하면 사람은 다른 프로그램이나 윈도우 탐색기 등이 Internet Explorer Icon을 가리고 있어 보이지 않는다면 Icon을 찾아서 클릭하지만 프로그램은 실행할 수 없기 때문에 바탕화면을 보는 선행 과정이 필요하다.
결론 : Internet Explorer Icon의 더블 클릭보다, 화면 정리(바탕화면보기)가 선행되어야 하는 작업이다.
처리 방안 : Task Bar의 최우측 바탕화면 보기 버튼을 클릭하거나, 단축키(Win + D)를 입력 한 후, Internet Icon을 찾아 더블클릭한다.
1-2-1. WIndows Task바에 포함된 Icon 을 클릭
1) Task바의 경우 항상 보여지고 있기 때문에 바탕화면을 우선적으로 띄울 필요가 없다. 그리고 Task바의 Icon을 1회 클릭하는 것으로 정상실행된다. 단, PC 설정에 따라 기존에 Explorer가 2개 이상 실행 중이었다면 열려져 있는 창을 보여줄뿐 Explorer가 활성화 되지 않는 것을 확인했다.
결론 : 실행중인 Exlporer 의 갯수가 먼저 확인되어야 한다.
처리방안 : Explorer가 2개 미만으로 실행 중일때와 이상 실행 중일때를 분리하여 경우에 따른 동작을 개별 설정한다.
우리는 인터넷을 시작하기 위한 2가지 방법에 대한 분석을 하였고 두가지 중 어느 방법을 택하는 것이 더 유리 또는 편리 한지 고민을 해볼 필요가 있다.
* 해당 기능 적용 전 pyautogui의 제한 사항 중 하나는 듀얼 모니터의 좌표를 정상적으로 인식하지 못한다는 것이다.
되도록 단일 모니터 또는 주모니터에서만 사용하는 것이 오류를 줄일 수 있는 방법이 될 것 같다.
사람이 직접 할때는 큰 고민 없이 진행되던 과정이 PC에게 직접적으로 알려주기 위해서는 분명하고 명확한 여러 과정을 거쳐야 함을 알 수 있다.
이제 위 과정을 python-pyautogui 를 이용해서 구현해보자.
위의 2가지 방법 중 [1-1. 바탕화면의 Internet Explorer Icon을 더블 클릭] 이 더 쉽고 정확히 구현할 수 있다는 생각이 들어 해당 방법으로 진행할 예정입니다.
각각의 동작은 마우스 클릭과 키보드의 입력, 단축키 등 으로 구현할 수 있다.
순서대로 다시 WorkFlow를 그려보면
1. 바탕화면 보기 버튼 클릭, 또는 단축키(Win+D) 입력 중 택1
2. 바탕화면에서 Internet Explorer Icon 찾기
3. Icon 더블클릭, 또는 클릭 후, Enter 중 택1
4. 주소창 이동하기. 주소창 image 검색 또는 단축키(Art+D) 중 택1
5. 주소창에 원하는 주소 Typing 하기 (www.daum.net)
6. Daum 아이디로 로그인 버튼 찾아서 클릭
7. ID, PW 입력하기
8. 메일 버튼 누르기
으로 나타낼 수 있다.
물론 예외적인 상황에 대한 고민도 해볼 수 있어야 완성도가 높다고 할 수 있다.
다음 글) pyautogui step2 자동화 업무 분석 (tistory.com)
이전 글) python pyautogui란? (tistory.com)
파이썬 rader chart 작성법(spider chart) (1) | 2022.09.15 |
---|---|
python 업무자동화(매크로) 란? (0) | 2021.07.01 |
시작 (0) | 2021.07.01 |
댓글 영역