如何在react-native中向android添加resource-id

时间:2017-07-28 20:05:30

标签: android react-native firebase-test-lab

我试图使用firebase TestLab,但它似乎只能定位资源ID。我有这样的元素:

<Input {...props} testID="usernameIput" />

但似乎testID未映射到resource-id。如果这不是这样做的话,那么如何在react-native中访问resource-id?如果我不能在android studio中添加resource-id的工作是什么?

3 个答案:

答案 0 :(得分:1)

在视图上同时使用accessibleaccessibleLabel(到目前为止,似乎可以在View,Text,TextInput上使用),UiAutomator将从content-desc生成accessibleLabel字段。

目前,我们可以使用content-desc来识别标签。

可访问性标签上的DOC: https://facebook.github.io/react-native/docs/accessibility.html#accessibilitylabel-ios-android

<Text
    testID="btnText"   //works for iOS
    accessibilityLabel="btnText"    //works for android & iOS content-description
    accessible
  >
    {text}
  </Text>

答案 1 :(得分:0)

尝试构建以进行调试。提出了此解决方案here

您可以使用the answer here进行调试:

#React-Native 0.49.0+
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

#React-Native 0-0.49.0
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

然后在捆绑后构建APK:

$ cd android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated `apk` will be located at `android/app/build/outputs/apk`

答案 2 :(得分:0)

迟到近 4 年,但从 React Native 0.64 开始,testId 属性现在映射到 Android 版本中的 resource-id,这意味着依赖此属性的 Android 测试框架将正确运行。< /p>

之前使用 accessibleLabel 的解决方法不应该继续使用,因为它实际上破坏了可访问性。此更改的进一步理由可能是 found here