我正在为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'
。
这是为什么,并且有一种可以跨平台提取文本的解决方案吗?
答案 0 :(得分:0)
我有同样的问题。在iOS上,使用testID
代替accessibilityLabel
对我有用。对于Android,accessible: true
和accessibilityLabel
应该可以解决问题。但是:您不能全部设置它们。如果同时设置了accessibilityLabel
和testID
,则它将无法在iOS上正常工作。
iOS示例:
<Text testID={'emailError'}>Invalid email</Text>
Android示例:
<Text accessible={true} accessibilityLabel={'emailError'}>Invalid email</Text>
像https://github.com/tipsi/react-native-testid这样的库(或只是创建自己的函数)可以帮助您基于平台设置正确的属性。