Cypress点击元素集合,但不会永远循环



我有几个地方,我需要点击一些元素,但我不希望它循环通过。我觉得答案就在我面前,但却找不到正确的解决方法。

下面是一个代码示例,它现在被困在一个永久循环中:

for(let n = 1; n <= 19; n++){
cy.get('li.active > .nav > :nth-child(n) > a').click({multiple: true})
cy.wait(400)
}

我有19个元素,它们都是相同的,只是编号为1-19,我只想让测试单击它们,等待让它显示页面,然后单击下一个。

答案

cy.get('#side-menu > :nth-child(2) > a').click()
cy.wait(400)
cy.get('li.active > .nav').each(($ele) => {
cy.wrap($ele).find('a').click({multiple:true})
})

还处理了我的另一个for循环,它永远持续下去,永远不会停止,除非像这个原始问题一样手动停止,并将其替换为each()

cy.get('#side-menu > li > a').each(($ele) => {
cy.wrap($ele).click({multiple:true})
})
```

您可以使用each()循环遍历元素并逐个单击按钮-

cy.get('li.active > .nav').each(($ele) = > {
cy.wrap($ele).find('a').click()
})

如果你的页面刷新每次点击,你不能使用Cypress.each(),因为你会得到"脱离DOM"错误。

尝试递归函数

it('tests the nav buttons', () => {
function clickNav(buttonNum) {
if (buttonNum === 20) return   // finished
cy.get('li.active > .nav > :nth-child(n) > a').click()
cy.wait(400)
clickNav(++buttonNum)   // next
}
clickNav(1)
})

但是有别的东西在运行,从技术上讲,你的循环也应该正常。

感谢您的解决方案- Alpan的工作是这样的:

cy.get('#side-menu > :nth-child(2) > a').click()
cy.wait(400)
cy.get('li.active > .nav').each(($ele) => {
cy.wrap($ele).find('a').click({multiple:true})
})

忘了我必须通过第n个子click打开下拉菜单然后在each()

中添加{multiple:true}

相关内容

  • 没有找到相关文章

最新更新