首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pywinauto存在但不可见

Pywinauto存在但不可见
EN

Stack Overflow用户
提问于 2017-03-21 03:28:37
回答 1查看 6.5K关注 0票数 2

我正在自动化一个第三方应用程序的个人项目使用pywinauto。面对一个奇怪的问题,pywinauto返回dialog.Exist的True,但是对话框实际上是不可见的。因此,由于代码返回True,对话框上的进一步操作将失败。我相信应用程序已经缓存了对话框或其他东西。不知道该怎么处理。

代码语言:javascript
复制
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

这是输出

代码语言:javascript
复制
**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'}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 06:01:55

是的,Win32应用程序可以具有不可见的现有窗口。要检查可见性,可以将其称为:

代码语言:javascript
复制
visible = app.window(title ="Trader - 23506").is_visible()

或者这可能是一个时间问题(如果在大约50%的情况下失败,或者在.exists(...)调用之后现有窗口就消失了)。因此,处理关闭对话框的另一种方法是:

代码语言:javascript
复制
dlg = app.window_(title ="Trader - 23506")
try:
    dlg.wait_not('visible', timeout=2)
except Exception: # or timings.TimeoutError
    dlg.close()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42917915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档