【发布时间】:2021-02-25 02:16:31
【问题描述】:
我有一个自定义 Cypress 命令来滚动列表,直到您到达传递给命令的项目。在我的命令中,我有$.each,因此我可以将项目名称与传递给函数的项目名称进行比较。如果它们匹配,那么我会在我的环境中发送一个单击命令,即“ENTER”。
我能够成功滚动列表并找到我要查找的项目并单击它,但循环继续执行。我添加了return false,这就是赛普拉斯所说的应该打破循环,但它现在对我有用。任何想法为什么会这样?
listItems.getChildren('OneLineTextElement', 'type').each(($elm) => {
let labelAndValue = cy.wrap($elm).getChildren('LabelAndValue')
let label = labelAndValue.getChild('Label')
label.getProperty('texture-text').then(val => {
if (val == subject) {
cy.action('ENTER')
return false
}
else {
cy.action('DOWN')
}
})
})
【问题讨论】:
-
你的意思是
return false没有打破循环? -
是的,这就是赛普拉斯所说的应该打破循环。这是文档链接:docs.cypress.io/api/commands/each.html#Return-early
-
您确定要进入 If 块吗?如果没有,则在 if 块中放置两个
cy.log('if'),在 else 块中放置cy.log('else')以进行调试。 -
是的,我进入了 if 块,因为 enter 命令被执行,但 .each 循环继续在下一页上运行
-
我的理解是
return false应该在each的级别才能工作。由于它在label.getProperty('texture-text').then(val内部,因此无法按预期工作。
标签: javascript cypress