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

问题描述 投票:0回答:1

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

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

TIA

enter image description here

android android-listview android-espresso ui-automation
1个回答
0
投票

编辑:

使用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())
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.