pywinauto is_visible 抛出异常而不是返回 true/false 值

pywinauto is_visible throwing exception instead of returning true/false value

对于下面的代码,我检查 window 是否存在以及它是否可见。案例是 Exists returns 为真(但是 window 是隐藏的)。所以我又放了一张支票 is_visible。但是 is_visible 抛出异常而不是返回 true/false

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()

输出:

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 与 window 标题的正则表达式一起使用时是否有问题?

好问题。可能有一个错误。默认搜索条件默认包含 visible_only=True(但在异常消息中未提及)。抱歉,不能承诺快速修复它(有几个问题)。

为了解决这个问题,我建议在 try/except 块中使用 dlg.wait('visible', timeout=1)。它应该可以正常工作。