适用于 Android 和 IOS 的 testID 和 accessibilityLabel

Posted

技术标签:

【中文标题】适用于 Android 和 IOS 的 testID 和 accessibilityLabel【英文标题】:testID & accessibilityLabel for Android and IOS 【发布时间】:2021-12-29 10:43:39 【问题描述】:

我正在开始用 React Native 编写的新项目。想建议开发人员编写正确和自定义的定位器,这些定位器稍后将用作 Appium 元素。

当我深入研究主题时,我有点迷失了两个想法:testID 和accessibilityLabel。

在 Appium 官方网站上是这样写的: “这里的解决方案是确保不仅要在重要组件上使用 testID 属性,还要设置 accessibilityLabel 属性,以确保通过 Appium 的 'accessibility id' 定位器策略始终可以找到元素。 "

另一方面,我发现了一个短语:对于 React Native 中的 ios,您可以使用 testID,对于 android,据我所知,accessibilityLabel 是唯一的方法。”

为 Android 和 IOS Appium 自动化命名定位器属性的最佳方式是什么?

【问题讨论】:

【参考方案1】:

您必须同时使用这两者才能使其在 android 和 iOS 上运行。

最简单的命名约定是prefix_id。在这里,前缀可以是您的类名或从父容器传递的值。这样,您将能够为单个屏幕上的相同元素赋予唯一的名称。例如,假设您创建了一个输入框组件。该组件将在您的容器中多次使用,您需要唯一的 ID。在这种情况下,只需传递前缀,输入和标签都会被赋予唯一的 id。用于测试

这里还有另一层复杂性。 AccesibilityLabel 也用于画外音,您可能希望在发布版本中添加另一个有意义的文本。因此,最好创建一个处理所有这些的注入器类。如果您需要特定于平台的处理,那么可以在这个注入器类中完成。

对于测试版本,您还需要将可访问属性标记为 false。 https://github.com/facebook/react-native/issues/6560

【讨论】:

以上是关于适用于 Android 和 IOS 的 testID 和 accessibilityLabel的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Android 和 iOS 的具有相互证书的消息安全性

适用于 Android 和 iOS 的跨平台开发

适用于 Android 和 iOS 设备的 Titanium Appcelerator 蓝牙模块 [关闭]

适用于 Android 和 IOS 的 HighChart 库 [关闭]

适用于 Android 和 iOS 的不同软件包版本

适用于 Android 和 iOS 的基于 websocket 的 MQTT