[Python] PyWinAuto 윈도우 자동화 프로그램 Develop Tip

개발을 하다보면,  GUI 로만 동작하는 프로그램 들이 상당히 많고,

그 것을 자동화 하기는 쉽지 않습니다.


예를 들어 웹페이지를 열어 특정한 작업을 백번 정도 동일하게 진행한다고 하면,

이것을 자동화 하는 것이 훨신 손발이 고생을 덜하는 지름길이 되겠지요.


예전부터 찾아보다가 최근에야 테스트를 진행해 보았습니다.


Windows 7 64bit 에서 테스트를 진행했습니다.



제일 먼저 윈도우용 파이썬2.7을 다운로드하여 설치 합니다.

(하단의 64비트용은 pywinauto 모듈을 설치하는데 실패하여,  32비트용을 설치합니다)


구글 코드에 호스팅 되어 있는  pywinauto 에 들어갑니다.

(다운로드는 소스포쥐에 있었습니다)


pywinauto 에서는 win32의 Sendkeys 함수를 이용하는데 그것의 Wrapping python 모듈이 필요합니다.

pywinauto에서 설치하라는 sendkeys가 오류가 발생하여 찾아보았더니 위왁 같이,

순수 파이썬 sendkeys_ctypes 가 있었습니다.


환경 변수에 파이썬 설치위치 (C:\Python2.7) 를 시스템 환경변수 Path 에 추가해줍니다.


명령창을 열고, 위에서 받았던 pywinauto 모듈 소스가 있는 곳에 가서 

> python setup.py install

명령으로 설치합니다.


마찬가지로 sendkeys-ctypes-0.2.zip 도 풀어 설치를 합니다.


윈도우용 PyCharm으로 위와 같이 편집했습니다.

(PyCharm에 대해서는 이전블로그 참조)

(해당 파일

wa_01.py)


app는 notepad.exe를 실행시켜 거기서 발생한 process 정보를 담고 있다고 보면 됩니다.

테스트 해 보았더니 notepad 창 만 뜨는게 아니라 IME 등 몇개의 창이 더 떳습니다.


영문인 경우에는,


app.['Notepad']  라는 식으로 창 제목으로 찾아 올 수 있거나,

app.Notepad 로 해당 윈도우를 찾아올 수 있으나 한글인 경우에는

안되어 getWindow 라는 함수를 간단히 만들었습니다.


TypeKeys 함수로 해당 윈도우에 SendKey 이벤트를 날려줄 수 있습니다.


일단은 위에 내용을 디버그를 시작하면,


우측하단에 노트패드가 하나 떳구요,


"abcde"라는 키를 입력했습니다.


그 다음 Alt+F 파일 메뉴에서 "X"를 눌러 닫기를 시도했더니, 위와 같이 저장하겠느냐는 창이 떳습니다.


마지막으로 "메모장" 이라고 최상위 창을 한번 더 찾아 "Alt+N"을 눌러 저장하지 않고 종료를 하였습니다.


일단 현재 SendKey에서는 한글이 입력되지 않습니다. IME창을 찾아 한글로 바꾸는 키를 누르고

영문을 입력하면 한글이 될까 해 보았는데 실패했습니다.


성공하신 분은 알려주시기 바랍니다....



프로그램에서는 각 기능별 UnitTest와 위와 같은 자동화 스크립트를 이용하면,

충분히 원한느 테스트를 진행할 수 있을 것 같다는 생각이 들었습니다.



어느분꼐는 도움이 되셨기를...



핑백

덧글

  • stania 2012/12/12 23:12 # 삭제 답글

    메모장을 띄우고 app 객체에 연결한 후 app.notepad.TypeKeys(u"가나다라") 하니 입력이 되는 것을 확인했습니다-
  • 지훈현서아빠 2012/12/12 23:21 #

    아~ 저는 왜 안되었나 모르겠네요~ 한번 해 보겠습니다.
    감사합니다 ^^
  • 고르엡 2012/12/14 10:04 # 삭제 답글

    UI 오토메이션 이것저것 해봤지만 맘에 드는게 없었는데 이건 상당히 좋아보이네요~! 개발팀은 물론 QA에서도 이정도면 배워서 쓸 수 있을듯 싶습니다.
  • 지훈현서아빠 2012/12/14 11:33 #

    넵! 서로 서로 그런 자동화 스크립트를 공유하고 발전시키는 사이트가 필요할 것 같네요...
    도움이 되셨다면 저의 보람입니다. ^^
  • 지나가는행인 2013/02/05 19:11 # 삭제 답글

    개인적으로 해당 용도에는 굳이 파이썬을 쓸 필요는 없을것 같습니다.

    autoit이나 autohotkey를 쓰는게 훨씬 효율적인듯 하더군요;

    저도 python으로 처음 만들다가 그냥 autoit씁니다 요즘에는...
  • 지훈현서아빠 2013/02/05 22:28 #

    네... 그러고 보니 저도 autoit을 사오년 전쯤 사용했었던 기억이 나네요~
    좋은 의견 감사합니다 ^^
댓글 입력 영역

구글애드텍스트