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

时间:2017-04-05 07:51:50

标签: pywinauto

对于下面的代码,我检查窗口是否存在以及是否可见。例如,Exists返回true(但窗口是隐藏的)。所以我把另一个检查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是否有问题?

1 个答案:

答案 0 :(得分:1)

好问题。可能有一个错误。默认搜索条件默认包含visible_only=True(但在例外消息中未提及)。对不起,不能保证快速修复它(有几个问题)。

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