0

我正在尝试使用自动化读取“列表视图”的内容。第一次导航到它时,我可以从一个项目转到另一个项目,为每个列表项目获取正确的文本。但是,当我显示不同的屏幕(显然是在重用此显示对象)时,屏幕上的文本是不同的,但自动化会获得与第一组相同的文本。从那时起,我只能获取我查看的第一个视图的文本。就像正在缓存文本一样,我只能查看缓存的视图。然而,UISpy 似乎每次都能获取正确的值,如果我在自动化暂停时使用它,我最终会得到正确的值。

在我的自动化中,我使用 Find 来抓取标题,然后将树走到列表视图并获取每个元素的文本。我想如果你使用 Current 属性,你就会得到实时数据。显然我弄错了。如何刷新树或获取真实数据?

4

1 回答 1

0

是的,Current某个特定的属性AutomationElement将返回其当前的“实时”值。UIA 不会自动缓存任何内容,您必须自己声明并显式访问Cached属性。

可能发生的情况是,您在选择不同屏幕后看到的新树项目实际上是重新创建的(这实际上是有道理的,UI 方面),而不仅仅是更新RuntimeId您可以通过选择第一个屏幕并记下树项目的属性(您可以在 UI Spy 中看到它)轻松确定这是否是问题所在。然后,选择第二个屏幕并检查是否RuntimeId已更改。如果有,那么它只是不同的对象实例。

如果是这种情况,您需要做的就是再次获取这些物品。AutomationElement.FindAll使用ClassName属性条件会更容易做到这一点。

于 2013-11-23T16:04:10.567 回答