我有一个 WPF 应用程序需要自动化以进行测试。有一个使用 Windows UIAutomation 框架执行此操作的现有工具。
问题是当我尝试访问主应用程序上的元素并触发它们时,内存被分配在主应用程序上,并且无法强制对其进行 GC。更重要的是,如果没有找到页面上的元素并且执行了多次重新托盘,则有更多的内存要分配而不是释放。我相信问题来自AutomationElement类的Find和FindAll方法。
这个问题似乎很老了,没有通用的解决方案[1][2]。
自动化框架会进行一些缓存以更好地访问 UI 元素。我想到的一种可能的解决方案是禁用 UI 元素的缓存或强制清除缓存。以前有没有人这样做过并且可以帮助我?
另外,您还有其他解决方案来解决由 Windows UI 自动化框架引起的内存泄漏问题吗?
我在 Win7 和 Win10 机器上进行了测试。