鱼C论坛

 找回密码
 立即注册
查看: 1530|回复: 7

[已解决]pywinauto

[复制链接]
发表于 2023-5-19 11:16:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
执行下面命名,获取notepad窗口控件,为什么会失败,有大佬可以告诉一下原因嘛?

from pywinauto import Application
app = Application(backend="win32").start("notepad.exe")
dlg = app["Untitled - Notepad"]
dlg.print_control_identifiers()

运行失败:
C:\Py\pythonProject\venv\Scripts\python.exe C:\Py\pythonProject\Practise\Test.py
C:\Py\pythonProject\venv\lib\site-packages\pywinauto\application.py:1076: RuntimeWarning: Application is not loaded correctly (WaitForInputIdle failed)
  warnings.warn('Application is not loaded correctly (WaitForInputIdle failed)', RuntimeWarning)
Traceback (most recent call last):
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\application.py", line 250, in __resolve_control
    ctrl = wait_until_passes(
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
    raise err
pywinauto.timings.TimeoutError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Py\pythonProject\Practise\Test.py", line 5, in <module>
    dlg.print_control_identifiers()
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\application.py", line 613, in print_control_identifiers
    this_ctrl = self.__resolve_control(self.criteria)[-1]
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\application.py", line 261, in __resolve_control
    raise e.original_exception
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
    func_val = func(*args, **kwargs)
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\application.py", line 203, in __get_ctrl
    dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\findwindows.py", line 84, in find_element
    elements = find_elements(**kwargs)
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\findwindows.py", line 305, in find_elements
    elements = findbestmatch.find_best_control_matches(best_match, wrapped_elems)
  File "C:\Py\pythonProject\venv\lib\site-packages\pywinauto\findbestmatch.py", line 536, in find_best_control_matches
    raise MatchError(items = name_control_map.keys(), tofind = search_text)
pywinauto.findbestmatch.MatchError: Could not find 'Untitled - Notepad' in 'dict_keys([])'

Process finished with exit code 1
最佳答案
2023-5-19 11:17:19
这个问题的原因是pywinauto在启动应用程序时,需要等待应用程序完成启动并处于空闲状态,但是在这个例子中,启动notepad.exe时,它没有完成启动并进入空闲状态就立即尝试连接到它,因此出现了TimeoutError。要解决这个问题,可以在启动应用程序后添加一个等待时间,等待应用程序启动并进入空闲状态,然后再连接到它。例如,可以使用以下代码:

from pywinauto import Application
import time

app = Application(backend="win32").start("notepad.exe")
time.sleep(1)  # 等待1秒钟
dlg = app["Untitled - Notepad"]
dlg.print_control_identifiers()

这样就可以成功获取到notepad窗口控件了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 11:17:19 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +3 鱼币

这个问题的原因是pywinauto在启动应用程序时,需要等待应用程序完成启动并处于空闲状态,但是在这个例子中,启动notepad.exe时,它没有完成启动并进入空闲状态就立即尝试连接到它,因此出现了TimeoutError。要解决这个问题,可以在启动应用程序后添加一个等待时间,等待应用程序启动并进入空闲状态,然后再连接到它。例如,可以使用以下代码:

from pywinauto import Application
import time

app = Application(backend="win32").start("notepad.exe")
time.sleep(1)  # 等待1秒钟
dlg = app["Untitled - Notepad"]
dlg.print_control_identifiers()

这样就可以成功获取到notepad窗口控件了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-19 11:24:09 | 显示全部楼层
isdkz 发表于 2023-5-19 11:17
这个问题的原因是pywinauto在启动应用程序时,需要等待应用程序完成启动并处于空闲状态,但是在这个例子中 ...

还是不行啊,同样的运行失败[img]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-19 11:48:24 | 显示全部楼层
isdkz 发表于 2023-5-19 11:17
这个问题的原因是pywinauto在启动应用程序时,需要等待应用程序完成启动并处于空闲状态,但是在这个例子中 ...

同样的命令换成打开其它应用就可以,可能是notepad应用本身有啥问题,谢谢你的解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-19 17:50:55 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 19:18:08 | 显示全部楼层

回帖奖励 +3 鱼币

支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-19 21:00:07 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-19 21:07:35 | 显示全部楼层

回帖奖励 +3 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 02:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表