问题标签 [uia]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1329 浏览

accessibility - IAccessible、IAccessible2、UIAutomation 和 MSAA 有什么区别?

我正在开始研究可访问性,我对遇到的不同技术感到有些困惑。

IAccessible 和 IAccessible2 有什么区别?我原本以为 IAccessible2 可能是 IAccessible 的更新版本,但经过进一步研究,它似乎实际上是由微软的竞争对手制造的。维基百科说“它被定位为微软新 UI 自动化 API 的替代品。” MSAA 如何适应这一点?

谁能澄清 IAccessible、IAccessible2、UI 自动化 API 和 MSAA 之间的区别?为什么一个可能比另一个更可取?

0 投票
1 回答
322 浏览

.net - UI Automation的AutomationId在不同版本的windows上不一致

我正在使用 UI 自动化框架(.net 4.6.1)自动化应用程序。

在使用Visual UI Automation Verify我检查应用程序时,我能够看到AutomationId属性的值。

我用 C# (wpf) 编写了一个小型自动化脚本

当我在 Windows 7 上执行我的自动化脚本时,一切正常。

当我在 Windows 10 上尝试时,所有 AutomationId 值都是空字符串。

示例代码:

此示例返回 null,因为它找不到具有myAutomationId值的元素,当我探索所有子项时,AutomationElement.RootElement我发现 AutomationId 值为空(与我在 上看到的Visual UI Automation Verify不同,也与在 Windows 7 上运行时得到的不同)

我对AutomationId属性有什么遗漏吗?或者关于 UI 自动化框架如何在 Windows 10 上运行?

编辑:

我注意到,当我遍历子元素时,我发现其中一些元素的 AutomationId 具有 NativeWindowHandle 的值。这是为什么?

编辑2:

我已经尝试了非常广泛的具有多个版本的 UI 自动化 dll,甚至都无法在 Windows 10 上找到该应用程序。

同样的事情TestStack.White(也不适用于Windows 7)。

0 投票
1 回答
91 浏览

ui-automation - 是否存在一种搜索 IUIAutomationElement 指定名称是否包含空格的方法?

我发现如果我搜索名称包含空格的 IUIAutomationElement,FindFirst 方法会返回 nullptr,而不是正确答案。

我检查了我期望在树中返回的 target_uia 元素。

我怎样才能解决这个问题?

0 投票
0 回答
210 浏览

python - pywinauto print_control_identifier() 显示元素但无法使用 ElementNotFoundError 获取它

我试图使用 child_window() func 来获取父节点下的元素但未找到错误。这是父级的 print_control_identifier() 输出:

我运行以下代码来尝试更改编辑控件中的文本并得到错误:

0 投票
0 回答
187 浏览

python - pywinauto.findwindows.ElementAmbiguousError: 有 2 个元素符合条件 {'backend': 'uia', 'process': 12796}

当有 2 个元素(例如按钮)时,在 StackOverflow 上找到了一些关于此错误的已回答问题,但在这种情况下,PyWinAuto 说有 2 个 backend:uia 的 ? 我在任何地方都找不到解决方案。

例外:

0 投票
1 回答
154 浏览

c# - UiAutomationCore.dll 中的 System.AccessViolationException

我们有一个测试自动化工具,它大量使用 UI 自动化 API。在最新版本的 Windows(如 Windows 10 21H2、Windows 11)中,apiSystem.AccessViolationException在调用 AutomationElement 类的方法之一时会引发异常。这是我们的代码:

和堆栈跟踪: 在此处输入图像描述

方法GetUpdatedCache来自AutomationElement( UIAutomationClient.dll) 并调用来自UIAutomationCore.dll被调用的方法RawUiaHPatternObjectFromVariant- 此方法引发异常,鉴于在早期版本的 Windows 上一切正常,我不确定如何继续。

现在我们只是尝试处理这个异常——当然从长远来看这是不可接受的。

值得一提的是,我们测试过的两个新版本的 Windows 都处于预览/测试状态。在这样的版本中是否有可能某些 API 被“禁用”(当然它们也可能被破坏),有没有人有过这种情况的经验?我在问这两个问题 - 一般解决 System.AccessViolationException 和在 beta/preview 版本中不能正常工作的 API。

0 投票
0 回答
19 浏览

ui-automation - Inspect.exe 元素 controlType 行为在不同的 PC 上是不同的

在 Windows 应用程序中,inspect.exe 在不同系统中显示不同的控件类型。最初它是相同的,但是在有人更改了一些设置后,应用程序的控件类型开始表现不同。更改的设置与我的代码无关,也与使用它的应用程序无关。

这是我的 inspect.exe 屏幕

这是用户/另一个 PC 屏幕

因为元素的行为不同,我的程序无法识别元素。