问题标签 [microsoft-ui-automation]

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 投票
4 回答
9216 浏览

c# - UI 自动化不适用于 DataGridView

在尝试了几种解决方案后,我迫切需要帮助。

我尝试了几种方法,最后复制并仍然坚持使用使用 UIAutomation 获取 Datagrid 的完整内容的解决方案。

让我们谈谈代码,请考虑评论:

我既不能获取 a GridPattern,也不能从中获取TablePattern实例datagrid,两者都会导致异常:

这些行是DataGridView预先添加的,如下所示:

我正在编译为 .Net Framework 4.5。尝试了 UI 自动化客户端的常规用户权限和提升的管理员权限,两者都产生了此处描述的相同结果。

为什么DataGridView返回 0 行?

为什么我不能得到其中一种模式?

感谢您帮助我!


更新:

詹姆斯的帮助对我来说并没有成功。以下代码很难返回所有行(包括标题):

然后可以通过它们ControlType的 of来识别标题单元格ControlType.Header

0 投票
1 回答
1879 浏览

c# - Windows UI 自动化。如何自动化 Windows 资源管理器滚动条?

我正在使用 Windows UI 自动化框架: http: //msdn.microsoft.com/en-us/library/System.Windows.Automation (v=vs.110).aspx

我遇到的问题是微软提供的 UI 自动化框架似乎对某些 Windows 资源管理器视而不见。我可以找到根 AutomationElement“滚动条”,但是我找不到它的子组件,即按钮、位置等。这很奇怪,因为显然很多 WPF 应用程序会使用 Windows 资源管理器来选择文件,因此微软会将其视为一个主要错误在其框架内。所以我一定做错了什么?

在此处输入图像描述

下面的代码演示了我在做什么。root是 Windows 资源管理器 AutomationElement。我验证了这一点,因为我可以看到滚动条项目,因为它有一个自动化 ID。我还验证了它是正确的垂直滚动条,因为 Windows 资源管理器中有两个。

0 投票
0 回答
492 浏览

c# - UIAutomation 在后台不工作

我正在尝试自动化第三方 Windows 应用程序。我正在使用UIAutomation,它是 .net 3.0 框架的一部分。

它在本地运行时工作正常,但如果我将它部署在 Windows Server 2003 中并使其按计划运行而不登录,则它不起作用。我已经进行了大量的谷歌搜索,并且我知道出于安全原因,Windows 可能不允许这样做。有没有办法做到这一点?它与进行自动化 UI 测试非常相似。人们如何进行大量的自动化 UI 测试(无需远程打开服务器并观看测试用例执行)

我的解决方案是一个 Windows 应用程序。(理想情况下,我希望它是一个 Web 应用程序,可以在服务器上安装的 Windows 软件上自动执行手动任务,但这似乎更具挑战性

绝望的 !将根据要求提供更多信息。

0 投票
2 回答
274 浏览

c# - Windows UIAutomation 获取文件类型

是否可以使用 UI 自动化获取文件类型?

在一个文件夹中,如果我有多个同名但扩展名不同的文件,我必须使用屏幕坐标选择一个文件。我们得到 IUIAutomationElement,只能得到文件名,如果用户没有在窗口中选择“显示文件扩展名”设置,那么我无法区分文件。

还在考虑是否可以通过帮助文本/工具提示对其进行跟踪。但不确定如何在 UI 自动化中获取工具提示的句柄。

我看到了类似的旧线程,但没有答案.. UI 自动化/检索文件扩展名

提前致谢..

0 投票
1 回答
1093 浏览

c#-4.0 - UIA - 列表视图更改时,AutomationElement 不返回正确的名称

我正在尝试使用自动化读取“列表视图”的内容。第一次导航到它时,我可以从一个项目转到另一个项目,为每个列表项目获取正确的文本。但是,当我显示不同的屏幕(显然是在重用此显示对象)时,屏幕上的文本是不同的,但自动化会获得与第一组相同的文本。从那时起,我只能获取我查看的第一个视图的文本。就像正在缓存文本一样,我只能查看缓存的视图。然而,UISpy 似乎每次都能获取正确的值,如果我在自动化暂停时使用它,我最终会得到正确的值。

在我的自动化中,我使用 Find 来抓取标题,然后将树走到列表视图并获取每个元素的文本。我想如果你使用 Current 属性,你就会得到实时数据。显然我弄错了。如何刷新树或获取真实数据?

0 投票
0 回答
209 浏览

testing - 使用白色框架的用户界面自动化测试

我正在尝试自动化用 WPF 编写的 UI。我有一个列表框,其中包含一个按钮作为列表项。如何使用 White Framework 获取该特定按钮的实例?即使我尝试获取列表框的实例;它显示一个错误,说无法获取类型即列表框

0 投票
0 回答
95 浏览

c# - 无法使用 System.Windows.Automation 在日语操作系统中访问功能区工具栏

我试图在日文操作系统中访问第三方功能区控件。它与 UI 自动化 COM API 一起工作。但它不适用于托管 System.Windows.Automation。当加载托管 dll 时,它甚至无法使用 COM API。最初我认为这是 UIAutomationClient.dll 提供的 win32 客户端提供程序的问题。在调用 COM API 之前,我通过调用 SetProxyDescriptionTable 函数清除了 ProxyManager ProxyDescriptionTable。仍然无法正常工作。

在英文操作系统中一切正常。

我有两个问题。

  1. 这种情况的原因可能是什么?

  2. 是否可以将最新的 UI 自动化 COM API 与托管 UIAutomationClient.dll 提供的 Win32 客户端提供程序一起使用?

0 投票
1 回答
1145 浏览

c# - 订阅 UI 自动化事件会在窗口挂起时冻结应用程序

我正在使用 AddPropertyChangedEventHandler 根据http://msdn.microsoft.com/en-us/library/ms752286(v=vs.110).aspx订阅窗口事件

但是,如果目标窗口挂起或冻结(不幸的是,这种情况经常发生),我的整个应用程序也会挂起。

克服这个问题的最佳方法是什么?

(C#、.NET 4.5、WPF)

0 投票
1 回答
1482 浏览

c# - 自动化元素/上下文菜单

描述

我试图能够使用 UI 自动化与上下文菜单进行交互。基本上,我正在尝试:

  • 把重点放在一个AutomationElement
  • SendKeys.SendWait发送一个SHIFT+F10
  • 看看会弹出什么

我所看到的

我所看到的是AutomationElement.FindAll(TreeScope.Descendants, Condition.TrueCondition),即使 UISpy 看到它,它似乎也没有反映何时弹出上下文菜单。

任何帮助将不胜感激。

例子

这是我在LINQPad中运行的示例应用程序:

0 投票
0 回答
587 浏览

c# - 如何在 Metro 模式下为 Google Chrome 的 UI 控件获取 HWND

我正在尝试在 Metro 模式下访问 Google Chrome 的 UI 控件以获取当前 URL。

我使用“Inspector”工具(C:\Program Files (x86)\Windows Kits\8.0\bin\x86\inspect.exe)在桌面模式下获取 Chrome 的 HWND。它工作正常,但是当我尝试在 Metro 模式下访问 Chrome 时,它​​只显示一个没有子窗口的全局 HWND。

对于桌面模式下的 Google Chrome,我使用 UI 自动化框架来获取 URL:

您能否帮助在 Chrome 的 Metro 模式下访问 UI 控件?