본문 바로가기
Software coding skill(python, web등)

pywinauto 예제 - 메모장 저장

by 호빵님 2020. 2. 7.
반응형

자동화를 위해서는, 굳이 처음에 새로 프로그램을 실행시키는 것을 반복하는 것 보다는, 실행되어 있는 프로그램에서 계속 무언가 반복하는게 필요할 수 있다.

새로 프로그램 실행 : start()

열려있는 프로그램 인식 : connect()

# -*- coding: utf-8 -*-
"""
Created on Fri Feb  7 22:15:50 2020

@author: kenro
"""

from pywinauto.application import Application
import pywinauto
 
# 열려진 메모장 다이얼로그 창에 컨넥트 함
app = pywinauto.application.Application()

# 열려진게 없을때는 Run a target application
#app = Application().start("notepad.exe")

#app.connect(title="제목 없음 - 메모장") #처음 메모장 연 상태
app.connect(title="test - 메모장") #코드 한번 실행하고난뒤 타이틀 명이 바뀜

# 다이얼로그 창 정의
#mainWindow = app['제목없음메모장'] # main windows' title
mainWindow = app['test'] # main windows' title

# 파일 이름 입력하는 창에가서 'test.txt' 라고 입력
ctrl=mainWindow['Edit1'] 
mainWindow.set_focus()
ctrl.click_input()
ctrl.type_keys("test.txt")
 
# 열기 버튼 클릭
#mainWindow.Button1.click()
app.UntitledNotepad.menu_select("파일(&F)->다른 이름으로 저장(&A)...")
 
# '다른 이름으로 저장' 창의 속성을 리스트업 한다.
# app.다른_이름으로_저장.print_control_identifiers()
 
# 파일 full 경로 입력
app.다른_이름으로_저장.Edit1.set_edit_text(r"C:\Users\kenro\Documents\AutoTest\test.txt") #unicode escape
 
# '파일이름' 콤보박스에서 파일 종류 선택
app.다른_이름으로_저장.ComboBox2.select("모든 파일")
 
# '파일형식' 콤보박스에서 인코딩 선택
app.다른_이름으로_저장.ComboBox3.select("UTF-8")
 
# 바로 저장 버튼을 누르면 미처 콤보 박스가 안 바뀌어 에러가 나서 1초 시간 줌
import time
time.sleep(1.0)
 
# 저장 버튼 누름
app.다른_이름으로_저장.Button1.click()

#같은 이름 있다는 에러창이 나오면 클릭
app.다른이름으로저장확인.Button1.click()

파일 경로설정시에 unicodeescape error를 피하기위해서, 경로에 조작이 필요하다.

파이썬은 특수 문자를 \ 로 시작하여 인식하기 때문에 위와 같은 오류가 발생한다. 
해결방법은 \를 \\ 로 수정하여 처리하는 방법이 있고,

다른 방법은 문자열 " "앞에 r을 붙여 주면 raw 로 인식되어 오류가 나지 않는다.

반응형