问题标签 [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.
ui-automation - 将 TestComplete 的 UIAObject 与 Microsoft UI 自动化控制模式一起使用
在 TestComplete 中,UIAObject“ControlPatterns”属性列出了对象的 Microsoft UIA 控件模式。
一般问题:如何针对 UIAObject 调用这些控制模式?
具体问题:如果您有 UIAObject,如何获得 DataGridCell 的列标题?
wpf - 如何在文件中获取 WPF 应用程序的所有 AutomationID?
在 WPF 应用程序的自动化中(使用 UI 自动化;VSTS 2010),我们手动将所有自动化 ID 添加到资源文件中,然后一一访问它。考虑到应用程序可以随时扩展,手动添加这些 ID 可能会变得乏味。
那么,是否有任何可用的工具可以为我们创建这个?即以分层格式获取所有 id 并将其存储在一个文件(xml 或 csv)中,然后我们可以在需要时对其进行解析。
我希望有一个像 UISpy 这样的工具,它不仅可以监视所有元素,还可以导出相同的元素。
有这样的工具吗?或者有什么替代方法吗?
非常感谢任何有价值的反馈。
谢谢!
c# - FindAll for AutomationElement 在 MC++ 和 C# 之间的不同行为
我正在尝试使用托管 C++ 中的 UI 自动化来查找控件的ControlType.DataItem
子级。DataGrid
以下代码段在 C# 中对已知HWND
值起作用:
这会产生以下输出:
将代码转换为 MC++ 会产生零结果。这是转换后的 MC++ 代码:
是否有其他人使用托管 C++ 中的 UI 自动化遇到此问题?我过去曾将 MC++ 用于 UIA,这是我在 C# 中使用它时遇到的第一个区别。提前感谢您提供任何信息。
ui-automation - UIA:从控件类型名称(字符串)中获取 ControlType
使用 Microsoft UI 自动化。我有一个代表 UIA 控件类型的字符串,例如“Window”或“Button”。我想得到一个适合这个字符串的 ControlType 对象。怎么做?是否存在一些代表所有 UIA 控件类型的枚举?我发现只有 ControlType 有 ControlType.LookupById(int) 方法。但是我必须知道ID和名称之间的对应关系。当然,我可以使用所有可能的 UIA 控件类型创建自己的开关,甚至可以使用反射来获取 ControlType 工厂的所有成员。但我肯定应该是更简单的方法..
wpf - UI 自动化真的是 WPF 应用程序测试的好选择吗?
当谈到自动化 UI 测试时,对话总是以 UI 自动化结束。它是唯一的选择吗?
我个人不喜欢它的主要原因之一——复杂性。它被设计为适用于所有类型的应用程序。这种普遍性从来都不是免费的。UIA 引入了另一层抽象和相当复杂的 API。标准模式是有限的。自定义控件支持需要大量编码。我想知道为什么有人认为这是一个不错的选择?
WPF 具有出色且非常丰富的抽象,其中 UI 是视觉元素的分层树。这些元素公开了许多方法、事件和属性。树支持各种引用方式(例如相对源语法)。我们在 UIA 中失去了所有这些可能。为了什么?为了与老式应用程序和网络兼容?好吧,实际上,谁会需要它?万事通是个无所事事的大师。
像 Snoop 这样的工具可以将自己注入到正在运行的应用程序中并完全控制它。他们可以更改控件属性的值并引发事件。这还不够吗?没有。您希望您的测试能够像用户那样与 UI 进行交互——使用鼠标和键盘。但这是另一个可以解决的问题。
所以我想知道,我对 UIA 的喜悦有什么不明白的吗?
windows - 当我拥有 UIAccess 权限时,为什么 SetWindowPos 无法将窗口置于 z 顺序的前面?(Windows 7的)
我遇到了 SetWindowPos 无法可靠地将外部进程窗口置于 z 顺序顶部的问题。我可以将窗户放在前面,例如:
虽然它不是 100% 的时间。经过一番阅读,我发现了一些东西。
SetWindowPos 文档状态:
MSDN 上的一篇文章然后指出
AllowSetForeground 提及
我已经签署了我的 .exe 并启用了 UIAccess,以便我可以在清单中设置前景窗口:
我的程序启动,我收到 UAC 提示请求许可。然后我测试 UIAccess、管理员权限和 TokenElevationType。前 2 个返回 true,第 3 个返回 TokenElevationTypeFull。尽管我的新代码仍然遇到同样的问题。
我的代码是:
c# - Mono 没有找到 UIA Bridge,但软件包已经安装
我现在搜索了很长时间,但找不到解决我的问题的方法:
我成功编译了 ac# 项目(使用 monodevelop)
当我尝试使用 >mono fubar.exe 运行它时,我得到以下输出:
我还安装了软件包:libmono-uia-*
感谢您的每一次帮助
和
MONO_PATH=/usr/lib/uiaatkbridge/mono fubar.exe
我得到:
第一:感谢您的回复
没有给出结果,但我认为包是这样命名的......如果我只搜索“uia”,我会得到以下结果:
javascript - 数组的处理;由 iOS UI 自动化中的方法返回
我已经能够使用所有方法来自动化 iphone 应用程序测试,除了返回数组的方法......例如 elements()
我尝试使用数组声明来做到这一点
但它不工作
有人可以解答如何处理array
。需要什么修正?
c# - 如何遍历程序的所有子元素
我想构建一个应用程序中存在的 UI 元素树。我正在尝试使用 Microsoft UI 自动化。我可以通过访问 AutomationElement.RootElement 来访问桌面,但我不确定如何访问在桌面上运行的应用程序。
主要目标是构建已经在桌面上运行的目标应用程序的 UI 树。我无权访问目标应用程序的代码。
当我尝试跑步时
它给了我致命错误:无法获取未缓存的属性或元素。
请提出解决此问题的最佳方法。
gridview - 使用 UIA 自动化虚拟化控制
我正在尝试使用 Microsoft 的 UIA 自动化某个控件(Telerik 的 Rad GridView)。我创建了一个包装类,它公开了几个帮助方法供我的测试使用 - 最突出的示例是返回所有网格行集合的 GetAllRows() 方法。
我的问题是这个特定的控件是虚拟化的,这意味着在任何给定时间,只有可见的行在 UI 中呈现和表示。要获取所有行,我不得不使用 ScrollPattern 并反复向下滚动,直到达到 100% 滚动,每次都请求所有子行元素。除了这纯粹是丑陋的代码外,我还面临删除多次提取的行的问题,这很复杂,因为在这个特定的网格中,允许重复值。
Microsoft 建议使用 ItemContainer 模式,该模式允许在给定条件下请求特定控件下的所有 AutomationElement,无论它们是否被虚拟化。然后,您可以使用 VirtualizedItemPattern 的 Realize() 方法将 AutomationElement 带入视图并呈现它。
这本来可行的,不幸的是 Telerik 没有为他们的网格视图实现这个控制模式,即使他们这样做了,我也会在使用它时遇到问题,因为网格行没有获得唯一的 AutomationId,这使得很难制定一个 Condition 对象ItemContainer 模式将使用。
有谁知道如何更优雅地实现这一点?我在实现“滚动”方法来呈现行方面没有问题,但我不想处理删除重复的 AutomationElements。