无法通过应用识别模态



我有一个由 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>

尝试让应用程序检查器针对此模态工作。提前感谢您的任何建议。

可以尝试的策略:

  1. "在最外层设置可访问性={false} 使子视图可访问。">

见 https://github.com/appium/appium/issues/6517#issuecomment-298037046

  1. 如果您的模态具有透明背景,则后面的组件可能仍会标记为可见。我使用构建中设置的环境变量来使用 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

最新更新