【发布时间】:2016-11-26 13:06:53
【问题描述】:
我正在使用 React Native 开发一个需要端到端测试的应用。
来自 Selenium WebDriver 背景,在我看来,与 WebDriver 相比,在 Appium 中查找元素可能非常尴尬,因为原生组件只有 ID 和一个非用户定义的类。
- 有没有一种方法可以向元素添加某种元数据以方便查找?
假设我有一个单元格内包含复杂元素的表格,我需要先找到正确的行,然后是单元格,然后在单元格内找到要操作的正确组件。
理想情况下,我希望能够通过搜索“myTargetRows”之类的内容来枚举行。这会给我一个行列表。
- 如果我理解正确的话,在原生应用程序中没有两个组件可以具有相同的 ID,所以我不能就这样使用 ID,对吧? (即,对多个行组件使用相同的 ID“myTargetRows”)。
- 如果不是,我是否应该使用“myTargetRow0”、“myTargetRow1”等编号的 ID,然后使用 XPath 部分匹配 ID?
- 难道没有更好的办法吗?
- 如果我能做这样的事情,我可以链接那些
findElement调用来找到我想要的正确嵌套元素吗?
P.s.:我不想在我的定位器中硬编码确切的组件层次结构以避免在我在视图中移动任何东西时使它们失效,所以这些点击式解决方案无济于事。
附: 2:解决方案必须同时适用于 Android 和 iOS,即使我需要自己实现某种抽象。
【问题讨论】:
-
stackoverflow.com/a/37295343/1746118 检查这是否对您有所帮助
-
'没有两个组件可以有相同的 ID' 不是一个好的假设。不过,这是一个很好的长期实践。您也可以在 appium 中查找如何使用
List<WebElement>进行枚举,应该可以解决您的 2~5 个问题 -
你好,我有一个与此无关的问题,我正在 appium 工具中获取当前屏幕中的前一个屏幕元素以任何方式解决此问题
标签: android ios react-native appium