使用Appium进行强大的React Native元素查找

Gui*_*ira 7 android ios appium react-native

我正在使用React Native开发一个需要端到端测试的应用程序.

来自Selenium WebDriver背景,在我看来,与WebDriver相比,Appium中的元素查找可能非常笨拙,因为本机组件只有ID和单个非用户定义的类.

  1. 有没有办法可以为元素添加某种元数据,以便于查找?

假设我在一个单元格中有一个包含复杂元素的表,我需要首先找到正确的行,然后是单元格,然后找到正确的组件来操作单元格内部.

理想情况下,我希望能够通过搜索"myTargetRows"之类的内容来枚举行.这会给我一个行列表.

  1. 如果我理解正确,在本机应用程序中没有两个组件可以具有相同的ID,所以我不能像这样使用ID,对吧?(即使用相同的ID,"myTargetRows",用于多行组件).
  2. 如果没有,我应该使用像"myTargetRow0","myTargetRow1"等编号ID,然后使用XPath部分匹配ID?
  3. 有没有更好的方法?
  4. 如果我可以做那样的事情,那么我可以将这些findElement调用链接起来找到我想要的正确嵌套元素吗?

Ps:我不想在我的定位器中硬编码确切的组件层次结构,以避免在我的视图中移动任何东西时使它们无效,因此这些点击式解决方案无济于事.

Ps 2:解决方案必须适用于Android和iOS,即使我需要自己实现某种抽象.

Mel*_*cuk 2

您应该使用accessibilityLabelView 的道具。

accessibilityLabelPropTypes.node

当用户与元素交互时覆盖屏幕阅读器读取的文本。默认情况下,标签是通过遍历所有子节点并累加所有以空格分隔的 Text 节点来构造的。

更多信息可以在这里找到

对于唯一的 id,假设您有一个列表视图和 100 行。您可以将 rowId 和静态文本组合起来accessibilityLabel

例如:0_MyCustomRow、1_MyCustomRow