Я пишу автоматизированный тест для входа в приложение Android.Я записываю тесты с помощью Record Espresso Test, а затем редактирую код, поскольку он обычно полон ошибок.Я использую эспрессо androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2',
и uiAutomatorViewer
для двойной проверки имен R.id's~
и class
.
Я столкнулся с проблемой при попытке отредактировать текст в элементе без R.id
но с именем класса android.widget.EditText
:
android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: (with id: com.mydosesmart:id/til_name and an instance of android.widget.FrameLayout and an instance of android.widget.EditText)
Проблема в том, что элемент с именем класса android.widget.EditText
не имеет R.id.
.Это имя класса не является уникальным для этого представления, этот элемент с именем класса android.widget.EditText
имеет родительский элемент с уникальным R.id.
.
В представлении входа в приложение два элемента имеют имя класса android.widget.EditText
, поэтому я не могу назвать этот элемент только по имени класса.Я хочу назвать это так: внутри элемента с R.id.til_name
найдите элемент с именем класса android.widget.EditText
.Ниже приведен код, который я использую сейчас, и он не работает.
ViewInteraction textInputEditText2 = onView(
allOf(withId(R.id.til_name), instanceOf(Class.forName("android.widget.FrameLayout")), instanceOf(Class.forName("android.widget.EditText"))));
textInputEditText2.perform(replaceText("testespresso"), closeSoftKeyboard());
Это тоже не удается:
ViewInteraction textInputEditText2 = onView(
allOf(withId(R.id.til_name), instanceOf(Class.forName("android.widget.EditText"))));
textInputEditText2.perform(replaceText("testespresso"), closeSoftKeyboard());
Поскольку у множества элементов в тестируемом приложении нет обозначенного R.id Я хотел бы найти простой способ вызвать их в целях тестирования.