html - 需要帮助对大量元素进行迭代测试
问题描述
我目前正在尝试找到一种方法来对大量元素进行迭代测试。元素都是“li”,是卡片/图块,按钮和文本显示在“ul”(无序列表)网格中。
理想情况下,我需要能够按顺序定位每个元素并对它们执行一些步骤和断言。
我写了以下内容,但它不起作用,但它与使用 cy.each() 命令一样接近:
cy.get('.ul_element')
should('have.length', X)
.each((list) => {
cy.wrap(list).should('have.attr', 'X')
})
我希望能够做出断言并一个接一个地选择每个元素上的按钮。
这是列表:
并扩展了 li 元素之一:
如果有人冷帮我接近,将不胜感激。
干杯。
更新:
使用 cypher 的评论后,我真的很接近我需要做的事情 - 我目前有以下迭代每张卡并断言每张卡上都有按钮:
it('每张卡片都有一个“i”、“下载”和“更多操作”按钮', () => {
cy.get('[href="/x/y"] > .w-full').click()
cy.wait(2000)
cy.get('.auto-rows-fr > li')
.should('have.length', 25)
.each((list) => {
cy.wrap(list).children('[class="relative rounded-lg card-container-inner h-full"]')
.children('[class="relative z-0 flex flex-col h-full overflow-hidden rounded-lg shadow-lg card-front"]')
.children('[class="flex flex-col justify-between flex-1 py-4 px-3 bg-white"]')
.children('[class="m-0 pt-3"]')
.children('[class="flex justify-between"]').then(($btnBar) => {
cy.wrap($btnBar).children('[title="More information"]').should('exist')
cy.wrap($btnBar).children('[title="Download file"]').should('exist')
cy.wrap($btnBar).children('[title="More options"]').should('exist')
})
})
});
我想知道是否有人知道我将如何为此添加一个循环以使我能够在进入下一张卡片之前单击一张卡片上的各个按钮?
解决方案
您在选择器中遗漏了一些东西。你这样做的方式,只遍历每个ul
元素。但是您希望它遍历每个li
元素。
试试这个例如:
cy.get('.auto-rows-fr > li')
should('have.length', X)
.each((list) => {
cy.wrap(list).should('have.attr', 'X')
})