排毒:使用多个元素匹配器会导致错误

Posted

技术标签:

【中文标题】排毒:使用多个元素匹配器会导致错误【英文标题】:Detox: Using multiple element matchers results in error 【发布时间】:2018-12-21 02:55:42 【问题描述】:

我正在使用 Detox 在 React Native 应用程序上使用以下规范进行 E2E 测试:

React Native 0.55.4 Node 9.2.0 Detox 7.3.7

当我在我的应用程序中的页面上时,我可以使用带有 Matcher element(by.id('scrollView')) 的 scrollView 滚动,我可以使用 Matcher element(by.text('This Button')) 单击按钮,但如果我想使用 @ 链接来选择按钮元素987654324@ 方法我收到错误Cannot find UI element

我不知道为什么我可以独立地与这两个元素交互,但是当我链接它们时它们不再起作用。

这是一个经过净化的 React Native 代码示例:

Route.js

<ScrollView style=styles.container testID="scrollView">
 <View style=styles.header />
   this.body()
</ScrollView>

this.body() 进行了一些验证,但 render() 并没有什么特别之处:

<View>
  <CustomButtonComponent />
</View>

自定义按钮组件是另一个带有一些文本和按钮元素的视图。

我唯一的猜测是,由于我使用的是嵌套视图/自定义组件,因此 Matcher 逻辑可能无法处理。有任何想法吗?也许我不完全理解文档。

【问题讨论】:

我尝试让.and() 工作,但我做不到。虽然这两个元素在单独完成时都是可见的。我能够让它与.withDescendent() 一起工作。这可能适合您的需求? 感谢@Andrew 的帮助,原来我认为and() 方法是用于链接元素,但在查看文档后,看起来你是对的。我正在寻找更像 withDescendant()withAncestor() 【参考方案1】:

正如@Andrew 在他的评论中指出的那样,我的问题是无效的,因为我误解了文档。如果您想根据与其他元素的关系进行匹配,请使用 withDescendant()withAncestor() 而不是尝试与 and() 链接。

【讨论】:

我很高兴你能弄明白。我不是 100% 确定我是否正确,所以不想把它作为答案。

以上是关于排毒:使用多个元素匹配器会导致错误的主要内容,如果未能解决你的问题,请参考以下文章

Python 分析:使用 line_profiler 的 @profile 装饰器会导致错误

保存 scikit-learn 分类器会导致内存错误

排毒:多个匹配器计数?

在虚拟函数周围使用#ifdef预处理器会导致与库链接的程序出现运行时错误[关闭]

使用 by.text 进行排毒子字符串匹配

Detox IOS - 由于连续动画错误导致测试失败,disableSynchronization 不起作用