<파이썬에서 Timeout Error 처리하기>
pywinauto 를 이용한 자동화 프로그램 개발 시 초기에 아래와 같이
pywinauto.timings.TimeoutError 메시지가 나오는 경우가 있다.
이런 경우는 자동화 시키기 위한 프로그램이 아직 Display(evoke) 되기전에
다음문장 내용(코딩문장)들이 먼저 수행 되기때문에 나오는 경우가 있다.
File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/Lee/Documents/02 Lecture_Study/16 Python_Croll/02 Daeshin_stock/Daeshin_DB/01_ver_check_02.py", line 10, in <module>
dlg = timings.WaitUntilPasses(20, 0.5, lambda: app.connect(title=title)).Dialog
File "C:\Users\Lee\AppData\Roaming\Python\Python36\site-packages\pywinauto\timings.py", line 449, in wait_until_passes
raise err
pywinauto.timings.TimeoutError
물론 다른 Error 인 경우도 있지만, 기존에 잘 수행되던 로직이 안되는 경우는 먼저 위와 같은 경우가 아닌지 확인이 필요하다.
해결방법은 프로그램을 로딩 한 이후의 문장에 "time.sleep(10)" 문장을 삽입하여 뒷 문장 프로그램이 로딩할 시간(필요한 시간, 예시:10초)을 확보해 주는 것이다.
app = application.Application()
app.start('C:/CREON/STARTER/coStarter.exe')
title = "CREON Starter"
dlg = timings.WaitUntilPasses(20, 0.5, lambda: app.connect(title=title)).Dialog
pass_ctrl = dlg.Edit2
time.sleep(10)
pass_ctrl.set_focus()
pass_ctrl.type_keys("ID")
cert_ctrl = dlg.Edit3
cert_ctrl.set_focus()
cert_ctrl.type_keys("PWD")
btn_ctrl = dlg.Button1
btn_ctrl.Click()
---------------- ---------------- ----------------
ps. 도움이 되셨으면, 구독, 좋아요 꾸욱!!! ㅎㅎ
'IT > 파이썬' 카테고리의 다른 글
파이썬 자동로그인 (4) | 2018.05.06 |
---|---|
findbestmatch.MatchError: 에러 처리 (1) | 2018.05.05 |
파이썬 AttributeError: WindowSpecification class has no 'SetFocus' method 에러 대응 (2) | 2018.03.30 |
pywinauto 사용시 에러 수정방법 (1) | 2018.03.26 |