Нет идентификатора для моего Android UI Testing

Я хотел бы написать некоторый тест пользовательского интерфейса для моего приложения Android, чтобы автоматизировать скриншоты.

Мое приложение написано с помощью React-Native.

Чтобы написать мои тесты, чтобы узнать идентификатор ресурса моего компонента, но, как вы можете видеть на этом скриншоте, я не вижу никакого идентификатора ресурса с помощью ui Automator Viewer в этом примере приложения React-Native.

Посмотрите это изображение.

Я хотел бы знать, есть ли способ предоставить некоторые идентификаторы моим компонентам, чтобы я мог написать какой-либо тест или если есть другой способ выбора моих компонентов.

Примечание. Я пытаюсь написать Espresso Test.

testID работает только на iOS и не привязан к идентификатору ресурса в Android.

Вы можете указать accessibilityLabel для своего компонента. В uiautomatorviewer он отображается как content-desc

Чтобы быть кросс-платформенным, вы должны указать оба:

 <Text style={styles.welcome} accessibilityLabel="MyId" testID="MyId"> Welcome! </Text> 

Затем вы можете найти его, используя что-то вроде webdriver с селектором тильды browser.waitForExist("~MyId")

Да, есть! Вы можете передать testID любому компоненту, который реализует реквизиты <View /> , как testID здесь .

Строка testID

Используется для поиска этого представления в сквозных тестах.

Смотрите также этот очень информативный блог-блог о UITesting in React Native. Речь идет о тестировании iOS, но часть javascript будет одинаковой для Android.

Прежде всего, идентификатор каждого компонента пользовательского интерфейса объектов Android должен быть определен в папке ресурса (res) в виде XML-макетов (вам нужно убедиться, что вы определили его в правильных тегах) и получить идентификаторы на Android, пожалуйста Следуйте шагам:

 1. Launch Android Studio, Click on "Android Device Monitor" icon next to "SDK Manager" 2. Connect your device and launch the application 3. Select your device name from the list of devices on the left panel 4. Click on Dump "View Hierarchy for UI Automate" 5. Now you can hoover over any view on thde device dump and can see Resource-d in the node details in the right column. 

Примечание. Вы также можете делать скриншоты

1) Прежде всего, если ваш проект вы можете перейти к макету и добавить идентификатор к этому компоненту, а затем снять скриншот с помощью средства просмотра uiautomator, вы найдете свой идентификатор ресурса

2) Если вариант 1 невозможен (это очень маловероятно), вы все равно можете его проверить, так как со скриншота я вижу только один блок edittext, поэтому используя uiauatomator, вы можете протестировать его на основе класса. Ниже приведен код:

 private static UiDevice mDevice; func(){ mDevice = UiDevice.getInstance(getInstrumentation()); UiObject xyz=new UiObject(new UiSelector().**getClass**(android.widget.EditText)); xyz.click(); xyz.setText("abcdef"); } 

// Я не уверен, что его getclass () или getclassName () проверяют оба параметра

// xyz.click () необходимо как в uiautoamtor, вы не сможете редактировать текст

В текстовом поле до тех пор, пока оно не будет выбрано