Appium element.text () возвращает элемент accessibilityLabel вместо текста - PullRequest
1 голос
/ 14 апреля 2019

Я начинаю тестировать свое приложение 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 Ответ

2 голосов
/ 15 апреля 2019

Я попал в тот же вопрос. Похоже, что 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...