我有一个由 react-native 创建的应用程序,其中包含从底部开始的模式提升。现在我正在尝试使用 appium 来自动化应用程序,并且在 android 中它工作正常。在iOS中,当我尝试在模态上使用appium检查器时,它只是被渗透并在下面返回控制权。
<Modal style={styles.bottomModal} isVisible={btmModal} backdropOpacity={0.3} onBackdropPress={this._closeBtmModal}>
<View style={styles.ways}>
<TouchableOpacity accessibilityLabel={IDS.MANUAL_NAV_CAMERA} testID={IDS.MANUAL_NAV_CAMERA} style={styles.line} onPress={() => this._navCamera()}>
<Image style={styles.scan} source={require('../../../resources/images/scan.png')} /><Text style={styles.lineTxt}>扫码绑定</Text>
</TouchableOpacity>
<TouchableOpacity accessible={true} accessibilityLabel={IDS.MANUAL_ADD_TEXT} testid={IDS.MANUAL_ADD_TEXT} style={styles.line} onPress={this._navManualBindMfa}>
<Text style={styles.lineTxt}>手动输入</Text>
</TouchableOpacity>
<TouchableOpacity accessible={true} accessibilityLabel={IDS.MANUAL_ADD_MODAL_CANCEL} testId={IDS.MANUAL_ADD_MODAL_CANCEL} style={[styles.line, styles.cancelline]} onPress={this._closeBtmModal}>
<Text style={styles.cancelTxt}>取消</Text>
</TouchableOpacity>
</View>
</Modal>
尝试让应用程序检查器针对此模态工作。提前感谢您的任何建议。
可以尝试的策略:
- "在最外层设置可访问性={false} 使子视图可访问。">
见 https://github.com/appium/appium/issues/6517#issuecomment-298037046
- 如果您的模态具有透明背景,则后面的组件可能仍会标记为可见。我使用构建中设置的环境变量来使用 appium 进行测试,这删除了透明度选项。这确实意味着正在测试的构建与正常构建不同
- 反应原生 0.63
- 桌面应用程序 1.22.0
- Appium 检查器 2022.1.2
在我们的项目中,障碍是元素Pressable
。将属性accessible={false}
设置为它修复了 Appium 在模式窗口上查找元素的功能。 <TouchableOpacity accessible={false}>
还起着在屏幕上查找元素的作用。
我必须强调的是,Appium Inspector 的屏幕截图视图仍然无法识别元素,但它的搜索功能(iOS 的"id"(可以找到它们。
到目前为止,我的印象是,如果 Appium Inspector 不渲染组件,则意味着它看不到它,因此我将无法在测试中使用它。
事实证明,它的搜索引擎仍然可以找到这样的组件,因此我们可以在测试中使用它,尽管有时它需要向某些组件添加额外的 props,例如父组件的accessible={false}
或testID
。