排毒 - 不能在 ScrollView 元素上使用滚动操作

Posted

技术标签:

【中文标题】排毒 - 不能在 ScrollView 元素上使用滚动操作【英文标题】:Detox - cannot use the scroll action on a ScrollView element 【发布时间】:2020-11-04 22:00:21 【问题描述】:

很遗憾,我不明白为什么 scrollscrollTo 操作不起作用。

这很奇怪,因为swipe 操作对相同的元素工作正常。

当然,ScrollView 元素存在并且可见

排毒版: 16.9.2

行动:

await element(by.id('some')).scrollTo('bottom');

元素:

<ScrollView testID="some">

错误信息:

Cannot find UI element.
    Exception with Action: 
      "Action Name":  "Scroll To Bottom content edge",
...

Error Trace: [
      
        "Description":  "Interaction cannot continue because the desired element was not found.",
        "Error Domain":  "com.google.earlgrey.ElementInteractionErrorDomain",
        "Error Code":  "0",
        "File Name":  "GREYElementInteraction.m",
        "Function Name":  "-[GREYElementInteraction matchedElementsWithTimeout:error:]",
        "Line":  "124"
      
    ]

【问题讨论】:

【参考方案1】:

试试这个看看它是否适合你:

await waitFor(element.by(id('element_you_looking_for_at_the_bottom')))
   .toBeVisible()
   .whileElement(by.id('some')) // where some is your ScrollView testID
   .scroll(50, 'down')

我遇到了和你一样的问题,所以不得不改用这种方法

【讨论】:

什么是awaitFor?你有一个语法错误。正确的语法是:await waitFor(element(by.id('elementTestId'))).toBeVisible().whileElement(by.id('scrollViewTestId')).scroll(100, 'down')

以上是关于排毒 - 不能在 ScrollView 元素上使用滚动操作的主要内容,如果未能解决你的问题,请参考以下文章

使用 toBeVisible() 期望和 tap() 操作排毒部分可见按钮的行为不同

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

排毒:iOS 模拟器如何在键盘上按 Next

如何在自定义助手中访问排毒元素匹配器?

如何告诉排毒等待我的元素出现

仅排毒测试启动画面