从集合中删除后编码 UI 测试对象不存在

Coded UI testing object does not exist after deleting from collection

使用带有 Coded UI 的记录器,我们测试了我们的 UI 以进行持续集成,但是我们遇到了一个障碍,因为我们要测试的操作之一是删除操作。

我们检查我们要删除的列表项是否存在,然后我们按下删除,删除命令将它从正在绑定的集合中删除,我们断言列表项不再存在但它仍然说它确实

我们认为可能需要几秒钟才能完全摆脱该对象,因此我们在断言之前等待了 20 秒,但仍然说它存在

列表项的自动化 ID 是真正唯一的,它们由字符串 + 列表中数字的 ID + 列表项中文本块的值组成,因此绝对不会与另一个元素

如果对此有任何想法,我们将不胜感激?

Coded UI 中的 UI 地图保留了它之前看到的内容的缓存。通常这很有效,因为它减少了查找内容所需的搜索量。有时缓存会保留已删除的内容。这个问题似乎就是这种情况。

刷新 UI 地图会清除缓存并强制后续 UI 地图访问进行另一次搜索。从而重新填充缓存。

没有必要清除整个缓存。通常只需要刷新一部分,这可以通过调用相关 UI 控件上的 ...Find() 方法来完成。

涵盖了一个类似的问题here in Stack Overflow,它还显示了一种了解 UI 地图的哪一部分需要刷新的方法。