gpt4 book ai didi

java - 如何获取 Espresso 中的元素列表?

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:38 25 4
gpt4 key购买 nike

我正在尝试使用 espresso 框架自动化 android native 应用程序,但我找不到获取元素列表的方法。 (例如我需要检查页面上的所有复选框)在 Selenium 中我可以这样做:

elements = self.driver.find_elements_by_xpath("//xpath")
for element in elements:
//do stuff

最佳答案

据我所知,在 espresso 中一次只能对一个元素执行一项操作。我想我无法通过 id 或类名或其他任何方式获取元素列表。因此,如果我们将容器作为 RecyclerView,我们可以在循环中对其子元素执行操作。像这样:

for (int i = 0; i <= num; i++) {
onView(withId(R.id.result)).perform(RecyclerViewActions.actionOnItemAtPosition(i, click()));
}

我们可以得到 child 的数量:

 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.

关于java - 如何获取 Espresso 中的元素列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com