问题标签 [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 投票
2 回答
2666 浏览

gdi+ - 我可以在另一个应用程序进程中获取任意窗口的位图吗?

我正在尝试自动化第三方 Win32 应用程序,我想在定义的时间间隔捕获特定窗口的图形内容。我正处于早期阶段,我目前正在尝试通过 C# 使用Microsoft UI 自动化API 来完成我的客户端应用程序和外部应用程序之间的大部分交互。我现在可以让外部应用程序做我想做的事,但现在我想从一个特定的窗口捕获图形,这个窗口似乎是一些第三方所有者绘制的控件。我怎样才能做到这一点?我要捕获的窗口是此图像中用红色矩形标记的窗口:

我需要红色矩形中的内容

我有一个可行的实现,但它取决于外部应用程序的 UI 是否位于顶部,这对我来说并不能保证,所以我希望找到更通用的东西。

当自动化应用程序位于顶部时,上述方法运行良好,但它只是盲目地复制矩形中的屏幕,所以我的代码受机器上运行的任何东西的支配,可能会覆盖我的应用程序的窗口。

我已经阅读了一些将WM_PRINT消息发送到窗口的建议。几个月前的这个问题/答案似乎很有希望,但是当我使用这段代码时,我只得到一个白色矩形,没有我的控件的实际内容。

那么,首先,我是否有可能可靠地保存窗口内容的位图?如果是这样,最好的方法是什么,我WM_PRINTSendMessage尝试有什么问题?

0 投票
4 回答
10604 浏览

wpf - Microsoft UI 自动化库与编码的 UI 测试

我对Test Automation这种事情很陌生。最近,我被分配到一个项目,我必须编写一个应用程序(或者,我不确定可能是一个脚本),它将自动执行一个类似 CAD 的 WPF 应用程序的 UI 测试,该应用程序缺少很多AutomationIds。

在 MSDN 和其他资源上做了一些搜索后,我有点困惑是否应该使用VS2010 中包含Microsoft UI Automation Library的新功能。Coded UI Test我不清楚这两种情况中的哪一种适用于哪种情况,一种比另一种有什么优势,哪种适合我的目的。

如果您对此事有经验/知识,请遮住一些光。提前致谢。

0 投票
1 回答
3479 浏览

microsoft-ui-automation - UI 自动化 - 基于多个标识符选择对象

我是新来的。我正在使用 UI 自动化来自动化我的应用程序。有没有办法根据多个标识符来识别元素。目前以下语法只能基于一个标识符进行识别。

我想通过 NameProperty 和 ControlTypeProperty 来识别元素。

这可能吗?

0 投票
1 回答
988 浏览

c# - 为什么在 UI 自动化客户端中捕获的异常会出现在被自动化的 UI 中?

一点背景...

我正在开发一个 UI 自动化应用程序,它与我们 UI 上的控件随机交互。被自动化的应用程序和 UI 都是 WPF 应用程序。我正在使用 UI 自动化可访问性框架。有时我会在我的应用程序中捕获并处理一个 ElementNotAvailableException。在使用 ANTS 7 分析我们的 UI 时,我注意到这些异常出现在 Gen 2 垃圾堆上。异常的新实例与我在应用程序中捕获异常的次数相匹配。

我已经查看了使用 WinDBG 的 GCRoot、UIAutomation 页面,但我还没有找到一个明确的解释来解释为什么在自动化的应用程序中会出现捕获的异常。当 UI 被自动化时,这些对象不会被释放,甚至在我关闭我的自动化应用程序时仍然存在。

有任何想法吗?

0 投票
2 回答
3417 浏览

c# - 将缓存与 AutomationElements 一起使用并不能加快速度 - 预期用途还是错误用途?

我正在尝试提高一些 UI 自动化操作的速度。我偶然发现了(不太好)记录在案的缓存可能性。

据我了解,整个操作(如果你有一个大的 GUI 树)是如此缓慢,因为对于每一个函数调用都必须有一个进程更改(有点像进入内核模式,我想,速度方面?!)。所以..进来缓存。

只需告诉函数缓存一个元素及其子元素,然后以闪电般的速度处理它。(据我了解,您只有一次上下文更改,并一次组装您需要的所有数据。)

好主意,但是.. 它对我来说和未缓存的变化一样慢。我写了一些简单的测试代码,并没有看到改进。

设置是:你得到一个元素并想要检查它的所有(许多)兄弟姐妹。给出了不带和带缓存的两种实现。

输出(调试模式):没有缓存的执行时间:1130 ms。执行时间父缓存:1271 毫秒。

为什么这不起作用?怎么提高?

感谢您的任何想法!!!

0 投票
1 回答
3136 浏览

ui-automation - 编码 UI 测试与 Microsoft UI 自动化库

我想对我的复杂 WPF 应用程序进行 UI 测试。我遇到了两个 UI 自动化库:

  1. 编码的 UI 测试
  2. Microsoft UI 自动化库。

我对上述两个选项感到困惑。请让我知道我应该在哪里使用哪个库?想知道两者的优缺点吗?

  • 谢谢
0 投票
2 回答
1077 浏览

microsoft-ui-automation - Microsoft UI 自动化未返回预期的组合框项目

我正在尝试使用以下 UI 自动化代码获取组合框的列表项,并且返回零项。这个组合框中肯定有项目,所以我做错了什么?

其中 GetMarketAreasComboBox 定义为:

0 投票
2 回答
703 浏览

c# - WPF UI 自动化 - 在为 TabControl 单击区域之前未填充控件树

我正在使用 Microsoft UI 自动化库为 WPF 应用程序进行 UI 自动化,它运行良好。

但是,我的应用在 TabControl 中有四个屏幕。即使我通过代码单击选项卡项,它的子控件树也不会填充。我能看到的唯一控件是“拇指”控件。当我看到带有 UISpy 的控制树时也会发生同样的情况。

但是,如果单击该窗口,则会出现所有控件。作为一种解决方法,我正在通过代码模拟鼠标点击,它可以工作。我想知道是否有更好的方法。

0 投票
0 回答
78 浏览

javascript - 为 JavaScript 事件引发自动化事件

我想提出可以记录以供进一步使用的自动化事件。当用户与 JavaScript 小部件交互时应该引发事件,例如按钮单击。

我试着寻找这个并发现了类似的东西 - http://msdn.microsoft.com/en-us/library/ms720907(v=vs.85).aspx

但我不明白如何将它与 UI 自动化 API 一起使用。有人可以指出我与资源相关的内容。

0 投票
4 回答
3292 浏览

c# - 选择列表框项目时不会触发事件 - .Net UIAutomation 框架

我今天正在学习 .NET UI 自动化框架。所以到目前为止我做了什么(参考各种文章)

  1. 有一个 WinForm,上面有 Listbox、PictureBox、TextBox 和 Button 控件。请参考图片:待测试的WinForm

  2. 我有一个控制台应用程序,其中包含所有 UI 自动化测试脚本或代码,可以自动执行 winform UI 测试。

工作: 从列表框中选择项目后,图片框会加载一些图像并显示它(要加载的代码在列表框的 SelectedIndexChanged 事件中)。

下面是 Forms listBox 控件的代码:

现在我的 UIAutomation 测试脚本代码如下:(只显示了必要的部分)

执行代码后,Select() 方法确实有效,并且 Form 列表框项被选中,如下所示:在此处输入图像描述

正如您在图像中看到的,列表框项目被选中,但事件 SelectedIndexChange 没有被触发,并且图片框没有反映更改。

所以任何指针都有很大的帮助:)

谢谢