浓缩咖啡-如何定位并单击ListView中的第一个项目

时间:2019-04-12 04:21:52

标签: android android-listview android-espresso ui-automation

我想使用Expresso在ListView中选择第一项。我无法按文字定位,因为列表总是在变化。同样,列表中的所有项目都具有相同的ID,并且不是唯一的。我已经附上了该视图的屏幕截图。如何使用expresso定位并单击第一个位置上的项目?

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

TIA

enter image description here

1 个答案:

答案 0 :(得分: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())
    }
}