我正在使用 Appium + Jest 为 Android 和 iOS 编写 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'
.
为什么会这样?是否有跨平台的解决方案来提取文本?
我遇到过同样的问题。使用testID
代替accessibilityLabel
在 iOS 上为我工作。对于安卓系统,accessible: true
and accessibilityLabel
应该可以解决问题。但是:您不能全部设置。如果accessibilityLabel
and testID
两者都已设置,它不再适用于 iOS。
iOS 示例:
<Text testID={'emailError'}>Invalid email</Text>
安卓示例:
<Text accessible={true} accessibilityLabel={'emailError'}>Invalid email</Text>
一个库(或者只是创建您自己的函数),例如https://github.com/tipsi/react-native-testid https://github.com/tipsi/react-native-testid可以帮助您根据平台设置正确的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)