4
我想使用espresso框架自动化android原生应用程序,我找不到如何获取元素列表的方法。 (例如,我需要检查所有checkboxed页面上) 硒我可以这样做:如何获得特浓咖啡中的元素列表?
elements = self.driver.find_elements_by_xpath("//xpath")
for element in elements:
//do stuff
我想使用espresso框架自动化android原生应用程序,我找不到如何获取元素列表的方法。 (例如,我需要检查所有checkboxed页面上) 硒我可以这样做:如何获得特浓咖啡中的元素列表?
elements = self.driver.find_elements_by_xpath("//xpath")
for element in elements:
//do stuff
正如我在咖啡understend可以在一个时间一个元素执行只有一个动作。我想我不能通过id或类名称或其他方式获取元素列表。所以如果我们有容器作为RecyclerView
,我们可以在循环中对它的子元素执行操作。就像这样:
for (int i = 0; i <= num; i++) {
onView(withId(R.id.result)).perform(RecyclerViewActions.actionOnItemAtPosition(i, click()));
}
,我们可以让孩子的数量:
public int getRecyclerViewChildCount(int matcher) {
final int[] count = {0};
onView(withId(matcher)).perform(new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return isAssignableFrom(RecyclerView.class);
}
@Override
public String getDescription() {
return "getting child count";
}
@Override
public void perform(UiController uiController, View view) {
RecyclerView rv = (RecyclerView) view;
count[0] = rv.getChildCount();
}
});
return count[0];
}
但这里将成为问题,如果,例如,我们在处理搜索结果和结果在部分加载。所以我们可以在第一部分执行点击。
但更简单的方法我猜只是指定要进行点击,赶上PerformException
如果指定的数字是子元素的数目大:
try {
int count = 50;// specify number of child elements in RecycleView you want to click
for (int i = 0; i <= count; i++) {
onView(withId(R.id.result)).perform(RecyclerViewActions.actionOnItemAtPosition(i, click()));
}
}catch(PerformException e){}//if argument is greater then files in search result.