pywinauto:无法在Access数据库表单中找到元素

时间:2019-01-02 20:33:38

标签: python-3.x 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']

当我尝试使用所有“窗格”值来检查“每月”按钮的位置时,出现此错误。

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

我尝试使用dlg.child_window(title =“ Monthly”,class_name =“ Button”),结果为pywinauto.application.WindowSpecification,位于0x217d84cbf60>。现在我不确定为什么找不到元素错误。

enter image description here

我检查了访问数据库中按钮的属性,发现每月可用,并且反映为切换按钮,我也尝试了切换按钮,但未找到。

如何避免此错误。

关于, 仁。

1 个答案:

答案 0 :(得分:0)

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

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