Нет ID для тестирования Android UI

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

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

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

testID строка

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

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

Ответ 3

Прежде всего, идентификатор каждого компонента пользовательского интерфейса объектов 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.

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

Ответ 4

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, вы не сможете редактировать текст

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