从集合中删除后编码 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 地图的哪一部分需要刷新的方法。
使用带有 Coded UI 的记录器,我们测试了我们的 UI 以进行持续集成,但是我们遇到了一个障碍,因为我们要测试的操作之一是删除操作。
我们检查我们要删除的列表项是否存在,然后我们按下删除,删除命令将它从正在绑定的集合中删除,我们断言列表项不再存在但它仍然说它确实
我们认为可能需要几秒钟才能完全摆脱该对象,因此我们在断言之前等待了 20 秒,但仍然说它存在
列表项的自动化 ID 是真正唯一的,它们由字符串 + 列表中数字的 ID + 列表项中文本块的值组成,因此绝对不会与另一个元素
如果对此有任何想法,我们将不胜感激?
Coded UI 中的 UI 地图保留了它之前看到的内容的缓存。通常这很有效,因为它减少了查找内容所需的搜索量。有时缓存会保留已删除的内容。这个问题似乎就是这种情况。
刷新 UI 地图会清除缓存并强制后续 UI 地图访问进行另一次搜索。从而重新填充缓存。
没有必要清除整个缓存。通常只需要刷新一部分,这可以通过调用相关 UI 控件上的 ...Find()
方法来完成。
涵盖了一个类似的问题here in Stack Overflow,它还显示了一种了解 UI 地图的哪一部分需要刷新的方法。