Espresso - 如何定位并单击ListView中的第一个项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Espresso - 如何定位并单击ListView中的第一个项目相关的知识,希望对你有一定的参考价值。

我想用Expresso选择ListView中的第一个项目。我无法通过文本进行定位,因为列表总是会更改。同样,列表中的所有项目都具有相同的ID,并且不是唯一的。我附上了这个视图的截图。如何使用expresso定位并单击第一个位置的项目?

我已经尝试过onView(withId(R.id.tv_default_spinner)).performClick()但会得到例外,即有多个具有相同ID的项目。

TIA

enter image description here

答案

编辑:

使用Matchers.allOf和Matchers.instanceOf查找类的类型,然后单击所需的位置。

我在我的一个Kotlin项目中对此进行了测试,它正在运行。

可以参考下面的代码,我点击第一项(位置0)

import androidx.test.espresso.Espresso
import androidx.test.espresso.Espresso.onData
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.rule.ActivityTestRule
import androidx.test.runner.AndroidJUnit4
import org.hamcrest.Matchers.allOf
import org.hamcrest.Matchers.instanceOf
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
class SampleSpinnerTest {

    @Rule
    @JvmField
    var mActivityRule = ActivityTestRule(MainActivity::class.java, false)

    @Test
    fun clickSpinnerFirstItem() {

        Espresso.onView(ViewMatchers.withId(R.id.spinner_data)).perform(ViewActions.click());

        onData(allOf(instanceOf(String::class.java))).atPosition(0).perform(ViewActions.click())
    }
}

以上是关于Espresso - 如何定位并单击ListView中的第一个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Espresso 单击特定的 RecyclerView 项目?

Android Espresso 测试 withHint 不起作用

如何使用 espresso 更改应用程序屏幕方向

如何在 Android Espresso Kakao 测试中单击 webview 按钮

检查 Espresso 是不是显示对话框

Android Espresso - 如果未选中,请单击复选框