Ответ 1
Эспрессо
В настоящее время нет способа установить идентификатор ресурса с помощью реакции-native, поэтому для выполнения сложных действий вам нужно написать какой-то код (например, ждать элементов), другие вещи, похоже, работают неплохо с помощью андроид-студии 'record espresso test '.
- используйте prop
accessibilityLabel
как идентификатор для элементов (например, "elementId" ) - использовать
onView(allOf(withContentDescription("elementId"), isDisplayed()))
для получения элемента - Действия над элементом на этом элементе (например,
element.perform(click())
)
Здесь вы можете найти полный тест https://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa
Appium
Если вы просто хотите выполнять действия и снимать скриншоты, вы можете сделать это с помощью appium:
- использовать prop
accessibilityLabel
как идентификатор элементов - в веб-драйвере используйте waitForElementByAccessibilityId
- снимок экрана с saveScreenshot ('out.png') → это создаст файл 'out.png' в каталоге, в котором вы запускали тесты
В appium у вас, наконец, будет что-то вроде (пример js):
driver.waitForElementByAccessibilityId('searchInputAcc', 5000)
.type('bold\n')
.sleep(5000)
.saveScreenshot('out.png')
iOS vs Android accessibilityLabels
Похоже, что для Android вы можете использовать accessibiltyLabel
для любого элемента (например, Text, View и т.д.), но iOS не будет устанавливать доступность для всех элементов, таких как Adnroid.
Если вы установите метку на Text
, она не будет равна вашей метке
<Text accessibilityLabel="my_text">content</Text>
даст вам ярлык content
на iOS, поэтому в основном вы можете просто установить атрибут accessible
на свои текстовые узлы для этой платформы
<Text accessible>content</Text>
То же самое для View
- iOS будет игнорировать ваши метки.
До сих пор не много элементов в iOS работало с вашими специальными метками доступности.
Ниже приведен список элементов, которые вы можете использовать для тестирования приложения для кроссплатформенных тестов на основе реакции
Вы можете использовать:
-
TouchableHighlight
- будет работать так же на iOS и Android, вы можете просто установить accessibilityLabel -
Text
- accessibilityLabel должен быть таким же, как внутренний тест +, вам нужно установить доступный атрибут
Не будет работать (для обеих платформ вообще):
-
View
P.S. мы еще не тестировали все возможные элементы, поэтому добавьте результаты для других элементов или дождитесь наших результатов.
Отладка
Вы можете получить источник корневого элемента, распечатать и прочитать его как xml для целей отладки (для webdriver.io: http://webdriver.io/api/property/getSource.html)