React Native + Appium iOS元素ByAccesibilityId.text()

时间:2018-08-01 21:06:01

标签: reactjs react-native appium jestjs e2e-testing

我正在为Android和iOS使用Appium + Jest为React Native编写测试。

这是我的React Native元素:

<Text accessibilityLabel={'emailError'}>Invalid email</Text>

这是我创建的Promise链,用于提取React Native Text元素的值:

driver.elementByAccessibilityId('emailError')
      .then(error => error.text())
      .then(errorText => expect(errorText).toBe('Invalid email'))

在Android上,此测试通过。在iOS上,此测试失败,并且errorText === 'emailError'

这是为什么,并且有一种可以跨平台提取文本的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。在iOS上,使用testID代替accessibilityLabel对我有用。对于Android,accessible: trueaccessibilityLabel应该可以解决问题。但是:您不能全部设置它们。如果同时设置了accessibilityLabeltestID,则它将无法在iOS上正常工作。

iOS示例:

<Text testID={'emailError'}>Invalid email</Text>

Android示例:

<Text accessible={true} accessibilityLabel={'emailError'}>Invalid email</Text>

https://github.com/tipsi/react-native-testid这样的库(或只是创建自己的函数)可以帮助您基于平台设置正确的属性。