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

ui-automation - GUI 自动化测试 - 窗口句柄问题

我们公司目前正在为紧凑型框架应用编写一个GUI自动化测试工具。我们最初搜索了许多工具,但没有一个适合我们。

通过使用该工具,您可以记录测试用例并将它们组合到测试套件中。对于每个测试套件,都会生成一个应用程序,该应用程序启动被测应用程序并模拟用户输入。

一般来说,该工具工作正常,但由于我们使用窗口句柄来模拟用户输入,所以你不能做很多事情。例如,我们不可能获得控件的名称(我们只获得标题)。

使用窗口句柄的另一个问题是检查更改。目前我们模拟一个控件的点击,根据结果我们知道应用程序是否已经进入下一步。

有没有其他(更简单)的方式来做这些事情(例如消息队列或其他任何东西)?

0 投票
1 回答
514 浏览

c# - 如何使用 UIAutomation 与旧的 ActiveX SSUltraGrid 读取/交互

我正在研究使用 ActiveX 控件的旧 Win32 应用程序的自动化测试。我正在使用使用 Microsoft UIAutomation 的 White(来自 Thougthworks)。我可以找到与控件相关的 AutomationElement,但是如何与之交互呢?

Spy++ 将网格控件视为单个窗口,因此我不能直接与行、列或单元格对话。如何从我的测试代码中与 SSUltraGrid 控件对话?

干杯奈杰尔

0 投票
2 回答
3814 浏览

ui-automation - 如何以编程方式在 Windows 中选择弹出菜单项?

我有一个应用程序,我正在为其编写一个小向导。它通过将鼠标移动到适当的按钮、菜单并单击它们来自动化应用程序的一小部分,以便用户可以观看。

到目前为止,它将鼠标移动到树项目并发送右键单击。通过 TrackPopupMenu 弹出一个菜单。接下来,我将鼠标移动到弹出菜单上的相应项目。我不知道如何选择菜单项。

我尝试将左键单击发送到菜单的所有者窗口,尝试将 WM_COMMAND 发送到菜单的所有者等。没有任何效果。

我想菜单本身就是一个窗口,但我不知道如何从我拥有的 HMENU 中获取它的 HWND。

关于如何 PostMessage 单击弹出菜单有什么想法吗?

PS 我使用单独的线程来驱动鼠标和发布消息,所以 TrackPopupMenu 同步没有问题。

0 投票
3 回答
8663 浏览

wpf - 使用 UI 自动化和 WPF 的经验

我们正在开发一个相当大的基于 WPF 的应用程序,并希望在我们的测试套件中包含一些自动化 UI 测试(其中已经包含许多单元测试)。

Microsoft的UI 自动化框架在一定程度上听起来非常适合在测试设置中以编程方式启动应用程序并与之交互。但是,我一直在努力寻找可靠的示例和技术经验参考,MSDN 上提供的文章和小示例不足以让我相信这是一个可靠的选择。

那么,有没有人有在他们的测试套件中使用 UI 自动化框架的实际经验?有哪些注意事项和陷阱?编写测试脚本时的任何最佳实践,您是否可以“记录并重播”为可编写脚本的格式,您应该在多大程度上促进应用程序的测试,您是如何将其合并到自动构建中的?我们是否应该转向 UI 自动化框架以外的其他方向?

随时在这里发布您的经验或链接到我可能错过的一些好的参考资料

0 投票
3 回答
1231 浏览

.net - 带有 ToolStripStatusLabel 的 UIAutomation

我有一个 WinForms 应用程序,我似乎无法ToolStripStatusLabel通过 UIAutomation 访问 a 的文本。微软暗示StatusStrips (以及可能其中的项目)的支持是有限的,但这似乎是一个足够基本的用例,它应该可以工作。

该控件显示ControlType.Edit在 UISpy 中,并且似乎只是一个只读文本框,但其值始终与其名称相同,而不是其文本。

UISpy中的属性如下:

基本上,我希望有一些方法可以myLabel.Text = "something"通过 UIAutomation 以某种方式获得该价值。

0 投票
7 回答
4886 浏览

.net - 是否有人使用 Microsoft UI 自动化成功实施 UI 测试自动化制度?

我正在寻找一个自动化 UI 测试框架/软件工具。过去我一直在使用TestComplete,虽然它是一个很好的软件,但是 GUI 测试自动化的概念被认为是足够困难的,所以我写了几篇文章抱怨

第三方测试自动化工具的问题之一是您必须学习新语言才能提高工作效率,更不用说工具支持很差了。我现在计划研究.Net 3.0 和White Framework附带的Microsoft UI 自动化。但在我这样做之前,我想知道那里的结果是什么。

有人有这方面的经验可以分享吗?您是否在应用程序上使用 UI 自动化创建了一个可持续且成功的测试套件?

编辑:这似乎是一个非常困难的问题。如果我在这几天内没有收到任何答案,我会为此设置赏金。

0 投票
1 回答
1170 浏览

c# - AccExplorer 未找到新控件/认为旧控件仍然存在

我们的应用程序有许多动态创建的控件。例如,导航窗格包含在用户浏览应用程序时更改的链接组。我第一次使用 AccExplorer 选择这些链接时,它完美地找到了它们。但是,在我导航到另一个页面后,AccExplorer 在更新的导航窗格中看不到链接。事实上,旧的链接控件仍然出现在 AccExplorer 树层次结构中,当我单击它们时,AccExplorer 会突出显示超出我们应用程序实际窗口范围的桌面区域。

控件已更改,但 AccExplorer 无法识别它们。它仍然认为层次结构是相同的。

我觉得奇怪的是,关闭 AccExplorer 然后打开 AccExplorer 的新实例会产生相同的结果。当我使用 AccExplorer 选择新导航控件时,它看不到新链接。它使用旧链接重新创建旧层次结构。查看新链接的唯一方法是关闭应用程序,重新打开应用程序,手动导航到新页面,然后使用 AccExplorer 选择控件。

导航控件是一个 DevExpress 控件。操作系统是WinXP。AccExplorer 2.0。我更喜欢使用 UIAutomation,但并非所有 DevExpress 控件都支持 UIAutomation。我们正在尝试使用 MSAA 来填补这些空白。

0 投票
2 回答
2085 浏览

wpf - 如何使用 UI 自动化(和/或白色)从外部应用程序获取控件的 DataContext

我正在使用White来驱动 WPF 应用程序的 UI,到目前为止它运行良好。

但是,我现在需要深入到被测应用程序的内部状态以检查某些条件。

具体来说,我有一个 DataGrid(来自WPFToolkit),它是数据绑定到List<MyBusinessObject>. 因此每一行都有DataContext一个MyBusinessObject

我可以通过使用它的自动化 ID 找到使用白色的网格。

然后我可以这样做:

它返回 string "MyCompany.Namespace.MyBusinessObject",所以我快到,但我实际上无法获得实际的业务对象本身。

我已经查看了 WPF UIAutomation AutomationPeers (从 中AutomationPeer,您可以获得Owner属性,它是实际的业务对象),但似乎您需要在进程中才能使用这些,因为它们都有构造函数,需要您提供 WPF 控件。

有什么方法可以从外部进程构造一个 AutomationPeer,或者深入了解DataContextWPF 控件的实际情况?

0 投票
1 回答
702 浏览

cruisecontrol.net - CruiseControl.NET 和 UI 自动化测试

我使用 White 作为 UI 自动化测试的框架。我可以使用 CruiseControl.NET(作为服务运行)来运行 White 编写的测试吗?

我已经尝试了一整天没有成功。White 框架需要交互式桌面。我收到的错误消息是:“找不到为应用程序创建的主窗口”

0 投票
2 回答
3434 浏览

.net - 如何在 UI 自动化中调用快捷键?/ 。网

我正在编写程序来自动化 win32 表单。我正在使用 Microsoft UI 自动化库。我不知道如何获取和调用该表单上的预定义快捷键。现在我只需获取 MenuItem 的 AutomationElement 并调用单击该元素。有什么解决办法吗?有人这样做吗?