【发布时间】:2019-01-04 22:43:45
【问题描述】:
我试图在访问数据表单中找到一个按钮并调用它我继续得到一个错误元素找不到'ElementNotFoundError: {'best_match': 'Monthly', 'top_level_only': False, 'parent': , '后端': 'uia'}'
import os
import subprocess
from pywinauto import Desktop
filename = r'C:\Users\Desktop\SW.accdb'
accessPath = 'C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.exe'
subprocess.Popen([accessPath,filename])
dlg=Desktop(backend='uia').window(title_re='Access - SW *')
#dlg.window(best_match='Monthly')
print(dlg.Workspace.frmMainMenu.print_control_identifiers())
我得到了这个结果 控制标识符:
Dialog - 'frmMainMenu' (L636, T284, R1567, B705)
['frmMainMenuDialog', 'frmMainMenu', 'Dialog']
child_window(title="frmMainMenu", auto_id="1120", control_type="Window")
|
| Pane - '' (L647, T673, R1556, B694)
| ['', 'Pane', '0', '1', 'Pane0', 'Pane1']
| child_window(auto_id="4", control_type="Pane")
|
| Pane - '' (L647, T324, R1556, B423)
| ['2', 'Pane2']
|
| Pane - '' (L647, T424, R1556, B673)
| ['3', 'Pane3']
|
| TitleBar - '' (L645, T293, R1558, B322)
| ['4', 'TitleBar']
当我尝试使用所有窗格值来检查每月按钮所在的位置时,我收到此错误。
ElementNotFoundError: {'best_match': 'Monthly', 'top_level_only': False, 'parent': , 'backend': 'uia'}
我尝试使用 dlg.child_window(title="Monthly",class_name="Button") 在 0x217d84cbf60> 处得到结果 pywinauto.application.WindowSpecification。现在我不确定为什么会出现 element not found 错误。
我检查了访问数据库中按钮的属性,我注意到每月可用,它反映为切换按钮,我也尝试了切换按钮,但没有找到。
如何避免这个错误。
问候, 任。
【问题讨论】:
-
Inspect.exe可以看到这个按钮吗? -
如果是,按钮可能是另一个更高级别元素的子元素。如果不是,您可能对 pywinauto 和任何其他 GUI 自动化工具不走运。但是 MS Access 提供了良好的 COM 接口,可以与 pyWin32 包中包含的
win32com.client模块一起使用。
标签: python-3.x pywinauto