14

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

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

但似乎 testID 没有映射到资源 ID。如果这不是这样做的方法,那么我怎样才能在 react-native 中访问资源 ID?如果我不能在 android studio 中添加资源 ID,有什么办法?

4

3 回答 3

5

晚了将近 4 年,但从 React Native 0.64 开始,该testId属性现在映射到resource-idAndroid 构建中,这意味着依赖该属性的 Android 测试框架将正常运行。

accessibleLabel不应该继续使用以前使用的解决方法,因为它实际上破坏了可访问性。可以在此处找到此更改的进一步理由。

于 2021-05-18T14:30:34.817 回答
4

在您的视图上同时使用accessible和使用accessibleLabel(到目前为止,似乎适用于视图、文本、文本输入),并且 UiAutomatorcontent-desc将从accessibleLabel.

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

关于可访问性标签的文档: 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>
于 2019-11-01T11:43:11.637 回答
0

尝试构建调试。这里提出了这个解决方案

您可以使用此处的答案进行调试:

#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`
于 2019-02-15T12:09:31.790 回答