reactjs - React Native + Appium iOS elementByAccesibilityId.text()
问题描述
我正在为 Android 和 iOS 使用 Appium + Jest 为 React Native 编写测试。
这是我的 React Native 元素:
<Text accessibilityLabel={'emailError'}>Invalid email</Text>
这是我为提取 React NativeText
元素的值而创建的 Promise 链:
driver.elementByAccessibilityId('emailError')
.then(error => error.text())
.then(errorText => expect(errorText).toBe('Invalid email'))
在 Android 上,此测试通过。在 iOS 上,此测试失败,并且errorText === 'emailError'
.
为什么会这样,是否有跨平台提取文本的解决方案?
解决方案
我遇到过同样的问题。在 iOS 上使用testID
而不是为我工作。accessibilityLabel
对于Android,accessible: true
应该accessibilityLabel
可以解决问题。但是:你不能只设置它们。如果accessibilityLabel
和testID
都设置了,它将不再适用于 iOS。
iOS 示例:
<Text testID={'emailError'}>Invalid email</Text>
安卓示例:
<Text accessible={true} accessibilityLabel={'emailError'}>Invalid email</Text>
像https://github.com/tipsi/react-native-testid这样的库(或只是创建您自己的函数)可以帮助您根据平台设置正确的属性。
推荐阅读
- javascript - 如何让谷歌仪表从其上方的函数创建的输入标签中读取数据
- rest - Salesforce API - 使用复合字段。(无法从 VALUE_STRING 反序列化 MailingAddress 实例)
- java - 获取文件作为类路径上的资源
- spring - 如何在 Spring JPA 中访问嵌入式类的字段
- json - 使用 Codeable 难以从 JSON 中提取数据
- android - 更改 ProgressBar 的颜色在 API<21 中不起作用
- android-studio - Flutter Doctor 1.2.1 更新后给出两个 android studio 版本
- apache - htaccess 从 url 中删除特定的 get 参数
- python-3.x - 加密不支持 python 3.x?
- r - ggtern 的三元图在闪亮时不起作用