목록으로

Programming Notes

500개의 벽을 넘어서: Python pyautogui로 스크린샷 자동화 도전!

반갑습니다, 개발자 여러분! 혹시 여러분도 끝없이 반복되는 단순 작업에 지쳐본 경험, 있으신가요? 저는 요즘 500개가 넘는 단위 테스트 결과 보고서 작성이라는 거대한 산 앞에 놓여 좌절하고 있었습니다. 각 프로그램 실행 로그를 캡처하는 과정이 문제였죠. 프로그램을 실행하고,...

반갑습니다, 개발자 여러분! 혹시 여러분도 끝없이 반복되는 단순 작업에 지쳐본 경험, 있으신가요? 저는 요즘 500개가 넘는 단위 테스트 결과 보고서 작성이라는 거대한 산 앞에 놓여 좌절하고 있었습니다. 각 프로그램 실행 로그를 캡처하는 과정이 문제였죠. 프로그램을 실행하고, 로그를 확인하고, 일일이 스크린샷을 찍어 저장하는 단순 작업의 반복… 마치 영원히 끝나지 않을 것 같은 굴레처럼 느껴졌습니다.

하지만 포기할 순 없었습니다. 효율적인 개발자의 무기는 바로 '자동화' 아니겠습니까? 그래서 저는 Python의 강력한 자동화 라이브러리인 pyautogui와 이미지 처리 라이브러리 Pillow를 활용하여 이 지루한 스크린샷 과정을 자동화하기로 결심했습니다. 마치 영화 속 주인공처럼, 코드를 휘갈겨 쓰며 자동화의 세계로 뛰어든 것이죠!

스크린샷 자동화, 어떻게 구현할까?

자동화의 핵심은 pyautogui 라이브러리를 활용하는 것입니다. pyautogui는 마우스 클릭, 키보드 입력, 화면 캡처 등 다양한 기능을 제공하여 마치 사람이 직접 컴퓨터를 사용하는 것처럼 프로그램을 제어할 수 있게 해줍니다.

먼저, pyautogui.screenshot() 함수를 사용하면 화면 전체 또는 특정 영역을 캡처할 수 있습니다. 이를 통해 프로그램 실행 후 나타나는 로그 화면을 자동으로 캡처할 수 있게 되는 것이죠. 캡처된 이미지는 Pillow 라이브러리를 사용하여 저장하거나 편집할 수 있습니다. 예를 들어, 특정 영역만 잘라내거나, 이미지 크기를 조정하는 등의 작업을 자동화할 수 있습니다.

더 나아가, pyautogui.locateOnScreen() 함수를 사용하면 화면에서 특정 이미지의 위치를 찾을 수 있습니다. 이 기능을 활용하면 프로그램의 특정 버튼을 자동으로 클릭하거나, 특정 조건이 만족되었을 때 스크린샷을 찍도록 자동화할 수 있습니다. 예를 들어, "성공" 메시지가 나타났을 때 스크린샷을 찍도록 설정하면, 테스트 성공 여부를 자동으로 기록할 수 있습니다.

저는 이러한 기능들을 활용하여 다음과 같은 스크린샷 자동화 프로그램을 구상했습니다.

  1. 프로그램 자동 실행: os 또는 subprocess 모듈을 사용하여 테스트 대상 프로그램을 자동으로 실행합니다.
  2. 로그 화면 캡처: pyautogui.screenshot() 함수를 사용하여 프로그램 실행 로그 화면을 캡처합니다.
  3. 이미지 저장: Pillow 라이브러리를 사용하여 캡처된 이미지를 지정된 폴더에 저장합니다. 이때, 파일 이름은 테스트 케이스 이름과 실행 시간을 조합하여 자동으로 생성합니다.
  4. 다음 테스트 케이스 실행: 다음 테스트 케이스를 자동으로 실행하고, 2단계부터 반복합니다.

이러한 과정을 자동화함으로써, 저는 더 이상 매번 프로그램을 실행하고 스크린샷을 찍는 지루한 작업을 반복하지 않아도 됩니다. 컴퓨터는 밤새도록 테스트를 진행하고, 저는 그 동안 잠을 자거나 다른 생산적인 일을 할 수 있게 되는 것이죠!

자동화, 그 너머를 향하여

스크린샷 자동화가 완료되면, 여기서 멈추지 않고 더 나아갈 계획입니다. 단위 테스트 템플릿 문서를 기반으로 저장된 스크린샷 이미지를 읽어 Excel 자동화를 진행하여 최종 결과 보고서를 자동으로 생성할 것입니다. 이를 통해 수작업으로 인한 시간 낭비를 획기적으로 줄이고, 대량의 문서 작업을 효율적으로 처리할 수 있을 것으로 기대됩니다.

물론, 자동화 과정에는 예상치 못한 어려움이 따를 수도 있습니다. 화면 해상도 문제, 프로그램 실행 시간 문제, 예외 처리 등 해결해야 할 과제들이 산적해 있습니다. 하지만 저는 이러한 어려움들을 극복하고 자동화의 완성을 향해 나아갈 것입니다.

저의 스크린샷 자동화 도전은 이제 막 시작되었습니다. 앞으로 이 여정을 통해 얻게 될 경험과 지식을 여러분과 공유하며, 함께 성장해 나갈 수 있기를 바랍니다. 각자의 컴퓨터 앞에서, 우리 모두 자동화의 마법사가 되어보는 건 어떨까요?