Espresso - 如何定位并单击ListView中的第一个项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Espresso - 如何定位并单击ListView中的第一个项目相关的知识,希望对你有一定的参考价值。
我想用Expresso选择ListView中的第一个项目。我无法通过文本进行定位,因为列表总是会更改。同样,列表中的所有项目都具有相同的ID,并且不是唯一的。我附上了这个视图的截图。如何使用expresso定位并单击第一个位置的项目?
我已经尝试过onView(withId(R.id.tv_default_spinner)).performClick()
但会得到例外,即有多个具有相同ID的项目。
TIA
答案
编辑:
使用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 不起作用