2017-04-05 3 views
1

아래 코드에서 창이 있는지 여부와 표시 여부를 확인합니다. Exists가 true를 리턴하는 경우가 있습니다 (그러나 창은 숨겨 짐). 그래서 나는 다른 체크 is_visible을 넣었다. 그러나pywinauto is_visible true/false 값을 반환하는 대신 예외를 throw하는 중

dlg = app.window_(title_re = "Buy Order Entry.*") 
if(dlg.Exists(1)): 
    #Code enters here but window is hidden 
    visible = app.window_(title_re = "Buy Order Entry.*").is_visible() 

출력 거짓/예외를 던지는 대신 진정한 반환 is_visible입니다 :

Traceback (most recent call last): 
    File "autoscript.py", line 924, in <module> 
    visible = app.window_(title_re = "Buy Order Entry.*").is_visible() 
    File "C:\Python27\lib\site-packages\pywinauto\application.py", line 357, in __getattribute__ 
    ctrls = self.__resolve_control(self.criteria) 
    File "C:\Python27\lib\site-packages\pywinauto\application.py", line 239, in __resolve_control 
    raise e.original_exception 
pywinauto.findwindows.ElementNotFoundError: {'process': 2164, 'title_re': 'Buy Order Entry.*', 'backend': u'win32'} 
    File "C:\Python27\lib\site-packages\pywinauto\application.py", line 239, in __resolve_control 
    raise e.original_exception 
pywinauto.findwindows.ElementNotFoundError: {'process': 2164, 'title_re': 'Buy Order Entry.*', 'backend': u'win32'} 

어떻게이 문제를 해결할 수 있습니까? is_visible은 창 제목에 정규 표현식을 사용할 때 문제가 있습니까?

답변

1

좋은 질문입니다. 아마도 버그가있을 것입니다. 기본 검색 기준에는 기본적으로 visible_only=True이 포함되어 있습니다 (예외 메시지에는 언급되지 않음). 죄송합니다. 빨리 해결할 수는 없습니다 (몇 가지 문제가 있음).

try/except 블록에서 dlg.wait('visible', timeout=1)을 사용하는 것이 좋습니다. 그것은 잘 작동합니다.

+0

예, 현재이 해결 방법을 사용하고 있습니다. 감사. –