c# - 使用 UIAutomation 检索工具条按钮
问题描述
在 Windows 窗体上使用 UIAutomation,我试图在特定窗体上检索鼠标下的任何控件。目标是处理应用程序的控件,检索并对其进行操作。
很多次以来我面临的问题是我找不到工具条按钮。每次我得到一个窗格时(不是我想要的工具条按钮的父级或子级,而是父级的兄弟姐妹)。
这是我要检索的工具条按钮:。
相同的控件,但在 Inspect.exe 中(突出显示:我得到的控件):
我虽然这是因为控件的 z 顺序,然后我尝试使用同级控件,用于它们的边界包含鼠标的控件(无论如何都将所有控件放在光标下的 z 顺序)。失败是因为未检索到工具条按钮。
我目前使用 UIAutomation 而不是 CodedUI,因为我需要运行一个自定义程序来检索控件并在特定服务器上执行自动测试,但我实际上在我的机器上安装了 Visual Studio Enterprise 2017 许可证,但是第二个许可证(用于服务器)和一个同事与我一起工作的第三个许可证会有点贵。
记住程序必须动态检索鼠标下的控件,有人可以给我任何可以帮助我深入调查的想法吗?
谢谢和问候
使用方法:
var aimed = AutomationElement.FromPoint(new System.Windows.Point(Cursor.Position.X, Cursor.Position.Y));
解决方案
通过变通解决。
我做了一个递归方法,可以在子项中更深入地搜索包含鼠标的控件(BoundingRectangle.Contains 方法)。这样,我可以在工具条中找到控件。
但是AutomationElement.FromPoint
方法不会在工具条内搜索。
推荐阅读
- c++ - 如何在 WRL 中表达 winrt::hresult 错误
- c# - RabbitMQ:如何创建一个始终在监听的消费者
- javascript - 我可以在 RxJs 中同时使用两个 mergeMap
- mysql - Sql 检索订单 woocommerce - 语句中的错误
- git - git status 显示未跟踪的文件,即使它们在 .gitignore 中被忽略
- sql - 通过不匹配另一列来过滤一列
- php - 如果还有正则表达式?
- python - 使用 torchaudio.load(filename) 加载固定持续时间的波形
- php - PHP从数据库提交后保留下拉值
- javascript - Cypress.io 上的存根函数被忽略