【问题标题】:Validating multiple elements using each使用每个验证多个元素
【发布时间】:2020-11-07 13:01:24
【问题描述】:

所以我有一个基本上只有一个图标的列表,我必须运行一个循环并检查图标是否存在。为此,下面的代码就像一个魅力 -

cy.get('span.test').each((element) => {
    cy.wrap(element).find('i').should('have.attr', 'data-icon-name', 'Archive')
});

当相同的列表项有两个图标时会出现问题,然后按照上面的方法,它只检查第一个未归档的图标并失败。如何确保在有多个图标的情况下,它也应该检查其他块,直到找到存档图标。

【问题讨论】:

    标签: javascript loops each cypress


    【解决方案1】:

    您正在使用“存档”对支票进行硬编码。您已经使用 find 遍历元素,您可以改为遍历元素并获取它们的属性值并执行您可能需要的操作。

     cy.get('span.test').each((element) => {
      // this will give you all the data-icon-name attribute values, in your example it will print - LockSolid Archived
      // now you can match the value and do any operations e.g. if(element.getAttribute("data-icon-name") == "Archive") alert("Archive found")
      console.log(element.getAttribute("data-icon-name"));
     });
    

    如果不存在“data-icon-name”属性,它将给出一个空值。

    【讨论】:

    • 嘿@Ank 感谢您的回答。但不幸的是element.getAttribute 不是一个有效的函数,但是你的答案有助于以不同的方式思考。这次我不是span.test,而是直接遍历存档图标span.test > i[data-icon-name="Archive"],它解决了问题。然后我只是使用expect(element).to.be.visible 验证了该元素是否可见
    • 很高兴你明白了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多