【发布时间】:2021-07-11 08:39:18
【问题描述】:
我是 pywinauto 的新手,刚刚开始学习。我需要找到菜单栏中存在的所有项目。 我有一个打开 7-zip 应用程序的代码,我正在尝试获取其中存在的所有菜单项。
if (os.path.exists(r"C:/Program Files/7-Zip/7zFM.exe")):
app = Application(backend='uia').start(r"C:/Program Files/7-Zip/7zFM.exe")
win = app.window()
app.top_window().descendants(control_type="MenuBar")
menu = app.top_window().descendants(control_type="MenuBar")[1]
for main_item in menu.children():
main_item.invoke()
subitems_level_1 = app.top_window().descendants(control_type="MenuItem")
print([i.window_text() for i in subitems_level_1])
# iterate expanded items (level 1)
for item in subitems_level_1:
if item.legacy_properties()[u'DefaultAction'] == u'Open':
# it has submenu
item.invoke()
subitems_level_2 = app.window(control_type="Menu", found_index=0).children()
print([i.window_text() for i in subitems_level_2])
time.sleep(3)
这是抛出错误:
Traceback (most recent call last):
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\application.py", line 250, in __resolve_control
ctrl = wait_until_passes(
File "C:\Users\40011212\PycharmProjects\winapp\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:/Users/40011212/PycharmProjects/winapp/examples/7zip.py", line 33, in <module>
subitems_level_2 = app.window(control_type="Menu", found_index=0).children()
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\application.py", line 396, in __getattribute__
ctrls = self.__resolve_control(self.criteria)
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\application.py", line 261, in __resolve_control
raise e.original_exception
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
func_val = func(*args, **kwargs)
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\application.py", line 204, in __get_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
File "C:\Users\40011212\PycharmProjects\winapp\venv\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'control_type': 'Menu', 'found_index': 0, 'backend': 'uia', 'process': 14956}
【问题讨论】:
标签: python-3.x pywinauto