【问题标题】:How to check Viewpager item ids with Espresso?如何使用 Espresso 检查 Viewpager 项目 ID?
【发布时间】:2014-12-29 19:17:09
【问题描述】:

我有一个 Viewpager,它由相同片段视图的副本组成。您可以在它们之间滑动。我正在编写 Espresso 测试并尝试对每个页面的 id 进行断言,但它们显然是模棱两可的,因为加载了多个页面并且它们都共享相同的 id。我不想将视图寻呼机更改为一次仅加载 1 页。在我的应用程序中,这样做效率很低。

我还考虑过使用标签并用唯一的字符串标记每个视图,但是我只修改源代码以便我的测试工作。我不喜欢那样。使用 Espresso 检查查看器页面内内容的正确方法是什么?

【问题讨论】:

    标签: android android-fragments android-espresso


    【解决方案1】:

    假设一次只显示一个页面,您可以使用 swipeLeft/swipeRight 移动到一个页面,然后检查该页面中是否显示了正确的内容。

    There are some examples here

    例如

     onView(withId(R.id.pager))
       .perform(swipeLeft())
       .check(matches(hasDescendant(withText("Position #2"))));
    

    【讨论】:

    • 问题不在于刷卡,而在于检查内容。我需要访问每个页面上的特定元素。不幸的是,我不能使用 hasDescendant(withText()) 因为这些元素内的内容的性质(它经常重复)。
    • 为了清楚起见,假设我在 viewpager 的每个页面中都有 R.id.mytext。它的内容在每个页面上都是唯一的,但有重复的部分。例如,在第 1 页上显示“高级软件工程师”,在第 2 页上显示“测试中的软件工程师”。我想断言内容从滑动到滑动变化,但仍然包含重复的部分:“软件工程师”。因此,要回答您的问题,R.id.mytext 的完整字符串是唯一的(职位名称)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多