Pywinauto Windows 存在但不可见
Pywinauto Windows Exists but not Visible
我正在使用 pywinauto 为个人项目自动化第三方应用程序。
面对一个奇怪的问题,其中 pywinauto returns True for a dialog.Exist 但对话框实际上并不可见。结果,由于代码 returns True,对对话框的进一步操作失败。我相信应用程序已经缓存了对话框或其他东西。不确定如何处理。
app = Application().connect(path = "D:/myapp/Trader.exe")
existFlag = app.window_(title ="Trader - 23506").Exists(timeout =2)
print existFlag #Returns True
if(existFlag):
app.window_(title ="Trader - 23506").Close() #Fails
这是输出
**True**
Traceback (most recent call last):
File "myauto.py", line 792, in <module>
app.window_(title ="Trader - 23506").Close()
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': 12964, 'backend': u'win32', 'title': 'Trader - 23506'}
是的,Win32 应用程序可以有不可见的现有 windows。要检查可见性,您可以这样调用:
visible = app.window(title ="Trader - 23506").is_visible()
或者这可能是时间问题(如果在约 50% 的情况下失败或现有 window 在 .exists(...)
调用后立即消失)。所以另一种处理关闭对话框的方法是:
dlg = app.window_(title ="Trader - 23506")
try:
dlg.wait_not('visible', timeout=2)
except Exception: # or timings.TimeoutError
dlg.close()
我正在使用 pywinauto 为个人项目自动化第三方应用程序。 面对一个奇怪的问题,其中 pywinauto returns True for a dialog.Exist 但对话框实际上并不可见。结果,由于代码 returns True,对对话框的进一步操作失败。我相信应用程序已经缓存了对话框或其他东西。不确定如何处理。
app = Application().connect(path = "D:/myapp/Trader.exe")
existFlag = app.window_(title ="Trader - 23506").Exists(timeout =2)
print existFlag #Returns True
if(existFlag):
app.window_(title ="Trader - 23506").Close() #Fails
这是输出
**True**
Traceback (most recent call last):
File "myauto.py", line 792, in <module>
app.window_(title ="Trader - 23506").Close()
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': 12964, 'backend': u'win32', 'title': 'Trader - 23506'}
是的,Win32 应用程序可以有不可见的现有 windows。要检查可见性,您可以这样调用:
visible = app.window(title ="Trader - 23506").is_visible()
或者这可能是时间问题(如果在约 50% 的情况下失败或现有 window 在 .exists(...)
调用后立即消失)。所以另一种处理关闭对话框的方法是:
dlg = app.window_(title ="Trader - 23506")
try:
dlg.wait_not('visible', timeout=2)
except Exception: # or timings.TimeoutError
dlg.close()