首页 > 解决方案 > pywinauto:无法在访问数据库表单中找到元素

问题描述

我试图在访问数据表单中找到一个按钮并调用它我继续得到一个错误元素找不到'ElementNotFoundError:{'best_match':'Monthly','top_level_only':False,'parent':,'backend ':'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']

当我尝试使用所有窗格值来检查按钮 Monthly 的位置时,我收到此错误。

ElementNotFoundError: {'best_match': 'Monthly', 'top_level_only': False, 'parent': , 'backend': 'uia'}

我尝试使用 dlg.child_window(title="Monthly",class_name="Button") 我在 0x217d84cbf60> 处得到结果 pywinauto.application.WindowSpecification。现在我不确定为什么会出现未找到元素的错误。

在此处输入图像描述

我检查了访问数据库中按钮的属性,我注意到每月可用,它反映为切换按钮,我也尝试了切换按钮,但没有找到。

我如何避免这个错误。

问候,任。

标签: python-3.xpywinauto

解决方案


我不相信它可以做到。Access 是事件驱动的体系结构,而不是可执行文件。

可以做的是从 Access 中的另一个对象(包括模块)编写和触发与该按钮后面相同的代码。但我认为您不能远程触发按钮本身。


推荐阅读