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']
当我尝试使用所有窗格值来检查按钮 Monthly 的位置时,我收到此错误。
ElementNotFoundError: {'best_match': 'Monthly', 'top_level_only': False, 'parent': , 'backend': 'uia'}
我尝试使用 dlg.child_window(title="Monthly",class_name="Button") 我在 0x217d84cbf60> 处得到结果 pywinauto.application.WindowSpecification。现在我不确定为什么会出现未找到元素的错误。
我检查了访问数据库中按钮的属性,我注意到每月可用,它反映为切换按钮,我也尝试了切换按钮,但没有找到。
我如何避免这个错误。
问候,任。
解决方案
我不相信它可以做到。Access 是事件驱动的体系结构,而不是可执行文件。
可以做的是从 Access 中的另一个对象(包括模块)编写和触发与该按钮后面相同的代码。但我认为您不能远程触发按钮本身。
推荐阅读
- javascript - Square API,读卡器销售产品的监听器
- python - Python语法中的“comp_for”是什么意思?
- gitlab - 如何删除 gitlab CI 作业管道日志/构建和历史记录
- javascript - 断言元素不在页面上
- .net - 我从哪里开始创建一个预填充列出 URL 密码的应用程序(甚至是应用程序)
- sml - 如何在 SML/NJ 中编写一个函数,将列表中的元素分类为等价类?
- opengl - NSOpenGLView 子类不在 Mojave 上呈现
- java - 从 Python 到 Java 的 POST 请求重制
- c - 无法正确接收自定义 MPI 数据类型
- memory-leaks - 在 GNU octave 中更新绘图会消耗内存