【问题标题】:Need help iterating tests on a large list of elements需要帮助对大量元素进行迭代测试
【发布时间】:2021-11-16 16:25:21
【问题描述】:

我目前正在尝试找到一种方法来对大量元素进行迭代测试。元素都是“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')
    })
    
    
    
    })
});

我想知道是否有人知道我将如何为此添加一个循环以使我能够在进入下一张卡片之前单击一张卡片上的各个按钮?

【问题讨论】:

  • 您在使用.each() 时遇到什么问题?
  • 请添加您的html。
  • @AlapanDas 我添加了指向包含 li 元素的 ul 屏幕截图的链接。我希望这是有道理的,因为我是使用 html 的新手。谢谢。
  • @agoff 因此,当我尝试对元素进行断言时,它会一次测试所有元素而不是按顺序测试它们,并且可能会导致 cypress 崩溃,因为项目太多。
  • 展开li 元素之一。

标签: html css cypress


【解决方案1】:

您在选择器中缺少某些内容。你这样做的方式,只遍历每个 ul 元素。但是您希望它遍历每个 lielement。

试试这个例子:

cy.get('.auto-rows-fr > li')
should('have.length', X)
.each((list) => {
cy.wrap(list).should('have.attr', 'X')
})

【讨论】:

  • 谢谢!!我使用了它,我已经接近我需要做的事情了 - 我已经添加和更新了上面的部分,如果你能看一下,我将永远感激不尽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 2011-08-12
  • 1970-01-01
  • 2018-06-06
  • 2017-05-28
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多