首页 > 解决方案 > 如何检测 WPF 中的窗口内容变化?

问题描述

我想开发一个测试自动化的工具。我有被测应用程序的源代码,所以我有权在应用程序中添加一些自定义逻辑。

自定义逻辑的一部分是检测内容更改,分析更改并最终将结果报告给测试工具,例如:一条消息“登录窗口已准备好”,然后是 user_id 和密码控制的位置。

通过使用 VisualTreeHelper 和 LogicalTreeHelper 类,我可以知道窗口的当前状态,但我不知道何时遍历树。

我发现了一个类似的问题,但这是针对第 3 方窗口的,我想我可以访问源代码的应用程序可能有更好的解决方案。

在 win32 中,我可以挂钩 WM_PAINT 来检测窗口内容的变化。您对如何在 WPF 中执行此操作有任何提示吗?

顺便说一句,虽然我想为应用程序添加自定义逻辑,但我也想尽可能少地更改应用程序逻辑。

我是 WPF 的新手,如果有什么完全错误的地方,我很抱歉。

标签: c#wpfevents

解决方案


您可能想要准确地指定您想要实现的目标,例如描述您想要做什么的示例。

你知道 VisualTreeHelper 类吗?https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.visualtreehelper

基于你所说的你想要达到的目标。我可能会订阅 UI 元素的一些“就绪”或“加载”事件。您应该能够通过 VisualTreeHelper 访问 UI 元素。

您还应该能够通过它与 UI 元素进行交互,例如。单击并输入信息。您还可以根据 UI 的状态运行测试(我认为)。

我也确信有很多 WPF 的自动化 UI 测试框架,只有谷歌:“WPF 的自动化 UI 测试框架”。

希望这可以帮助。


推荐阅读