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

标签 java android selenium android-espresso

我正在尝试使用 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/

相关文章:

Java - 将通用类的实例转换为专用类的实例

java - 当尝试查找 dll 的位置时,jvm 会查看注册表吗?

python - 通过 Selenium - Python 在新选项卡中打开 url 的最快方法是什么?

java - 使用 Spring Integrations Sftp Streaming java 配置写入远程文件

java - 可以将 null 分配给值类型变量或与值类型变量进行比较吗?

android - 编译 ApiDemos Android 4.4

android - which apk runs on the Android device ionic

java - Cordova应用程序构建失败-配置根项目 'android'错误消息

python - 使用 firefox 绕过弹出窗口 : Selenium Python 下载文件

python - 如何使用 Google App Engine 运行 Selenium 测试?