我想使用Expresso在ListView中选择第一项。我无法按文字定位,因为列表总是在变化。同样,列表中的所有项目都具有相同的ID,并且不是唯一的。我已经附上了该视图的屏幕截图。如何使用expresso定位并单击第一个位置上的项目?
我尝试过onView(withId(R.id.tv_default_spinner)).performClick()
,但会得到一个例外,即有多个具有相同ID的项目。
TIA
答案 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())
}
}