Эспрессо - Как мне настроить таргетинг и щелкнуть первый элемент в ListView - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу выбрать первый элемент в ListView с Expresso.Я не могу настроить таргетинг по тексту, потому что список всегда меняется.Кроме того, все элементы в списке имеют одинаковый идентификатор и не являются уникальными.Я приложил скриншот, как выглядит этот вид.Как настроить таргетинг и нажать на элемент в первой позиции с экспрессо?

Я пробовал onView(withId(R.id.tv_default_spinner)).performClick(), но получу исключение, что есть несколько элементов с одинаковым идентификатором.

TIA

enter image description here

1 Ответ

0 голосов
/ 12 апреля 2019

Отредактировано:

Найдите тип класса с помощью 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())
    }
}

...