#react-native #testing #appium
#react-native #тестирование #appium
Вопрос:
Я начинаю тестировать свое приложение React Native с помощью Appium. У меня есть простой сценарий входа в систему, в котором я ожидаю, что приложение status
будет 'Logged in'
после ввода и отправки некоторого имени пользователя и пароля. Я запускаю тест на симуляторе iPhone X 12.2.
Однако тест завершается с ошибкой:
Expected: "Logged in"
Received: "status"
Каким-то образом текстовое значение получено неправильно. Итак, как получить внутренний текст моего элемента?
App.js:
<Text accessibilityLabel="status">{this.state.status}</Text>
appium.test.js:
test('Login success', async() => {
expect(await driver.hasElementByAccessibilityId('username input')).toBe(true)
expect(await driver.hasElementByAccessibilityId('password input')).toBe(true)
expect(await driver.hasElementByAccessibilityId('submit button')).toBe(true)
expect(await driver.hasElementByAccessibilityId('status')).toBe(true)
await driver.elementByAccessibilityId('username input').sendKeys('some_username')
await driver.elementByAccessibilityId('password input').sendKeys('some_password')
await driver.elementByAccessibilityId('submit button').click()
const result = await driver.elementByAccessibilityId('status').text()
console.log(result) // 'status' WHY???
// the test runs fine until here:
expect(result).toBe('Logged in')
})
Все, о чем я могу думать, это то, что text()
это неправильная функция для получения внутреннего текста моего элемента, но это все, что я вижу в документах или руководствах, которые я просматривал…
Ответ №1:
Я столкнулся с той же проблемой. Похоже, что RN0.50 ввел эту проблему.
Это не ошибка в Appium, а проблема с реализацией WDA и тем, как она возвращает текстовое значение. https://github.com/appium/appium/issues/10349 идет дискуссия по поводу этой проблемы.
Вы можете решить эту проблему на IOS, используя testID
вместо accessibilityLabel
.
let textProps={}
if(Platform.OS==='android')
textProps.accessibilityLabel = "welcomeLabel"
...
...
...
<Text
style={styles.welcome}
{...textProps}
testID="welcomeLabel">
...
...
Вы все равно можете использовать elementByAccessibilityId
функцию.
Комментарии:
1. Да, использование
testID
вместоaccessibilityLabel
на iOS сделало свое дело! Спасибо!