Android UIAutomation获取动态View的最后一个子(UiObject)

时间:2014-08-25 04:52:21

标签: java android ui-automation

我有一种情况需要使用Android的UIAutomation测试套件获得动态视图的“最后一个孩子”。

我有以下代码,但它无法正常工作:

UiSelector viewSelector = new UiSelector().resourceId("conversation_view").childSelector(new UiSelector().index(4));
UiObject conView = new UiObject(viewSelector);
//get the last child
UiObject lastChild = conView.getChild(new UiSelector().index(conView.getChildCount()-1));

除了“lastChild”之外,一切正常。 “getChildCount”获取正确数量的子节点,因此我知道第一部分是检索正确的父对象。

它似乎在搜索“所有”孩子,但我只想让它搜索直接的孩子。

任何人都有任何想法如何从UiObject获得最后一个“直接”孩子?

谢谢!

1 个答案:

答案 0 :(得分:2)

对于那些感兴趣的人。解决方案是创建一个集合,它将为您计算所有孩子的数量。从那里你可以使用" getChildByInstance"来获得最后一个孩子。

以下代码似乎可以解决问题:

UiSelector viewSelector = new UiSelector().resourceId("conversation_container").childSelector(new UiSelector().scrollable(true));
//get the last child
UiCollection children = new UiCollection(viewSelector);
int childCount = children.getChildCount(new UiSelector().className("android.view.View"));
UiObject lastChild = children.getChildByInstance(new UiSelector().className("android.view.View"), childCount - 1);