React Native + Appium iOS elementByAccesibilityId.text()



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

这是我的React Native元素:

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

以下是我创建的Promise链,用于提取React NativeText元素的值:

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

在安卓系统上,这个测试通过了。在iOS上,此测试失败,并且errorText === 'emailError'

为什么会这样,是否有一种跨平台提取文本的解决方案?

我遇到了同样的问题。在iOS上使用testID而不是accessibilityLabel对我有效。对于安卓系统,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可以帮助您根据平台设置正确的属性。

最新更新