【问题标题】:pywinauto: Unable to locate elements in access database formpywinauto:无法在访问数据库表单中找到元素
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 2011-12-10
    • 1970-01-01
    • 2010-11-15
    • 2023-03-11
    相关资源
    最近更新 更多