我有一种情况需要使用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获得最后一个“直接”孩子?
谢谢!
答案 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);