React Native + Appium iOS elementByAccessibilityId.text()

2024-07-03

我正在使用 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(使用前将#替换为@)

React Native + Appium iOS elementByAccessibilityId.text() 的相关文章

随机推荐