Я пытаюсь написать тест Espresso, который будет переходить к поиску, набирать 2 буквы, чтобы получить добавочный поиск, и нажимать на 2-й элемент в списке.
Результаты отображаются в адаптере.
Первую часть я, конечно, делаю хорошо, но когда нужно кликнуть по пункту в списке, возникает проблема.
Я уже пробовал что-то вроде
onData(anything()).inAdapterView(withId(R.id.searchContainer)).atPosition(1).perform(click())
а также
onData(withChild(withText("Some Search"))).atPosition(1).perform(click())
(где Some Search — полный текст результата)
а также
onData(withId(android.R.id.text1)).atPosition(1).perform(click())
(где text1 — идентификатор поля результата)
@Test
fun searchForSandwich() {
onView(withId(R.id.textSearch)).perform(typeText("ha"))
onData(withChild(withText("Ham Sandwich"))).atPosition(1).perform(click())
Он должен щелкнуть результат и открыть новый экран/активность, и я сделаю там свое утверждение.
В настоящее время я получаю эту ошибку:
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
(is assignable from class: class android.widget.AdapterView and is displayed on the screen to the user)
Target view: "ce{id=-1, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, layout-params=android.widget.RelativeLayout$LayoutParams@4d102dd, tag=null, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=0}"
Любые предложения, это сводит меня с ума... Спасибо :)
is
(instanceOf(String::class.java)),is
(бутерброд с ветчиной))).perform(click()) ``` И это не сработало, что странно, потому что это точный жестко закодированный результат... - person somefun   schedule 23.05.2019