c# - UI 自动化:打开文件对话框元素树不包含所有元素
问题描述
我正在尝试使用带有 C# 的 UI 自动化在打开的Open
对话框中键入文件路径,然后按打开按钮。我能够找到对话框本身,但搜索内部元素(文件路径文本框和打开按钮)没有结果。当我遍历元素树将元素写入日志文件时,我看到日志显然太短并且并非所有元素都打印出来。
奇怪的行为:如果我在另一个窗口上用鼠标切换,对话框的遍历会返回所有元素,我能够找到所需的控件并与它们交互。
我尝试了很多方法来绕过这个问题:
AutomationElement.SetFocus
打开一些窗口,用;切换到它- 使用 Win API ( ) 搜索元素
FindWindowEx
; AutomationElement
在对话框的边界矩形内逐点获取屏幕上的点,通过x和y迭代一些步骤。
没有一种方法能给我想要的结果。
什么会导致使用 UI 自动化的元素树不完整,解决方法是什么?
我的情况是:
- 测试点击网页上的按钮
- 打开选择文件的标准 Windows 对话框
- 我正在尝试使用 UI 自动化填充文件路径文本框并按打开按钮
解决方案
我终于找到了这个解决方法:
- 对话框以文本框为焦点打开,因此获取当前焦点控件的句柄;
- 抓住
AutomationElement
把手; - 发送Alt+O使用
SendKeys.SendWait
.
推荐阅读
- c - C:矩阵向量乘积,两个双数相乘给出错误符号
- r - R bookdown,浮动目录下的文本
- python-3.x - 查找与专利相关的子专利的 Python 程序
- redis - 在 k8s 中创建 redis 部署时退避重启失败的容器
- javascript - 什么是中继操作名称?
- python - Generate every possible spacing within a specified string?
- java - adding custom css to button in JavaFX
- python - 递归在python代码中工作以找到最大值
- angular - Angular 7 - 未捕获的错误:网络错误
- php - POST 请求未正确到达 httpClient - ionic - php